javascript中的函数参数-本地或全局

javascript中的函数参数-本地或全局,javascript,Javascript,我是一名新的学习者,正在学习编写前端开发代码。我想知道JavaScript函数中的全局变量和局部变量。我理解局部和全局,但是函数参数呢,它们是局部的还是全局的 我应该总是将函数定义为函数添加(a,b)还是 函数添加(变量a、变量b) 我在某个地方读到,任何在函数中没有var关键字定义的变量都是全局变量。这一点让我困惑。第一点功能添加(a,b) 使用var关键字up实际上存在语法错误 我在某个地方读到,任何在函数中没有var关键字定义的变量都是全局变量 这是真的,但只有当您执行c='somethi

我是一名新的学习者,正在学习编写前端开发代码。我想知道JavaScript函数中的全局变量和局部变量。我理解局部和全局,但是函数参数呢,它们是局部的还是全局的

我应该总是将函数定义为
函数添加(a,b)
还是
函数添加(变量a、变量b)


我在某个地方读到,任何在函数中没有var关键字定义的变量都是全局变量。这一点让我困惑。

第一点<代码>功能添加(a,b)

使用
var
关键字up实际上存在语法错误

我在某个地方读到,任何在函数中没有var关键字定义的变量都是全局变量


这是真的,但只有当您执行
c='something'
时才可以。函数参数始终在本地范围内。

第一个参数<代码>功能添加(a,b)

使用
var
关键字up实际上存在语法错误

我在某个地方读到,任何在函数中没有var关键字定义的变量都是全局变量


这是真的,但只有当您执行
c='something'
时才可以。函数参数总是局部作用域。

参数是函数的局部,但这只是事实的一半,因为对象是通过引用传递的。因此,如果您的函数接受一个对象并修改该对象的任何成员,那么更改也会在函数外部看到(因为它是同一个对象)

在节点外壳中尝试以下操作以演示:

var obj = { a:0 };
obj;
function f(o) { o.a++; }
f(obj);
obj;
$node

var obj={a:0}

未定义

obj

{a:0}

函数f(o){o.a++}

未定义

f(obj)

未定义

obj

{a:1}


参数是函数的局部参数,但这只是事实的一半,因为对象是通过引用传递的。因此,如果您的函数接受一个对象并修改该对象的任何成员,那么更改也会在函数外部看到(因为它是同一个对象)

在节点外壳中尝试以下操作以演示:

var obj = { a:0 };
obj;
function f(o) { o.a++; }
f(obj);
obj;
$node

var obj={a:0}

未定义

obj

{a:0}

函数f(o){o.a++}

未定义

f(obj)

未定义

obj

{a:1}

函数中添加(a,b)
a和b只能在函数中访问,因此它们是该函数的本地对象

函数添加(变量a、变量b)
语法不正确。您不能将var放在那里。

函数中添加(a,b)
a和b只能在函数中访问,因此它们是该函数的本地


函数添加(变量a、变量b)
语法不正确。您不能将var放在那里。

您必须声明一个函数,例如函数add(a,b)。a和b是在调用函数时提供给函数的参数

它们在声明时不存在,并且是变量的局部变量。它们或多或少是对调用函数时传递给函数的变量的引用

var num1=4;
var num2=3;
功能添加(a、b){
返回a+b;
}
var结果=相加(num1,num2);

//结果:7
您必须声明一个函数,例如函数add(a,b)。a和b是在调用函数时提供给函数的参数

它们在声明时不存在,并且是变量的局部变量。它们或多或少是对调用函数时传递给函数的变量的引用

var num1=4;
var num2=3;
功能添加(a、b){
返回a+b;
}
var结果=相加(num1,num2);

//结果:7
函数添加(var a,var b){}
语法不正确,总是
函数添加(a,b){}
。您在哪里看到带有
var
关键字的参数?这是不允许的语法。函数参数仅限于函数的作用域,感谢您的澄清。现在我将始终记住,括号内不允许使用var关键字。
function add(var a,var b){}
语法不正确,它总是
function add(a,b){}
。您在哪里看到带有
var
关键字的参数?这是不允许的语法。函数参数仅限于函数的作用域,感谢您的澄清。现在我将永远记住,括号内不允许使用var关键字。感谢您的帮助,这一点变得很清楚。。我对C++语法感到困惑。谢谢你的帮助,它变得清晰了。我对C++语法感到困惑。