我是一名新学员,学习编写前端开发代码。我想知道JavaScript函数中的全局变量和局部变量。我了解本地和全球,但功能参数如何,是局部的还是全局的?
我是否应该始终将函数定义为function add(a,b)
或
function add(var a, var b)
?
在某处我读到,在函数内部没有var关键字的情况下定义的任何变量都会变为全局变量。这一点令我困惑。
答案 0 :(得分:0)
第一个。 function add(a,b)
使用var
关键字实际上存在语法错误。
在某处,我读到在函数内部没有var关键字的情况下定义的任何变量都变为全局
这是真的,但只有当你做c = 'something'
时才这样。函数参数始终是本地范围的。
答案 1 :(得分:0)
参数是函数的局部参数,但这只是事实的一半,因为对象是通过引用传递的。因此,如果你的函数接受一个对象并修改了这个对象的任何成员,那么这个改变也会在函数之外看到(因为它是同一个对象)。
在节点shell中尝试以下操作来演示:
var obj = { a:0 };
obj;
function f(o) { o.a++; }
f(obj);
obj;
$ node
var obj = {a:0};
未定义
OBJ;
{a:0}
function f(o){o.a ++};
未定义
F(OBJ);
未定义
OBJ;
{a:1}
答案 2 :(得分:0)
在function add(a,b)
中,a和b只能在函数中访问,因此它们是该函数的本地函数。
function add(var a, var b)
语法不正确。你不能把var放在那里。
答案 3 :(得分:0)
您必须声明函数add(a,b)等函数。 a和b是你在调用它时给函数的参数。
它们在声明时不存在,并且是变量的本地。它们或多或少是对调用它时传递给函数的变量的引用。
var num1 = 4;
var num2 = 3;
function add(a, b){
return a + b;
}
var result = add(num1, num2);
// result : 7
在没有关键字var的括号函数内声明的变量变为全局变量,例如结果如下:
function add(a, b){
result = a + b ;
}