假设从local
变量中省略var
是否正确
始终覆盖同名的global
,如果它也缺少var
?
另外,使用具有创意许可的var
有什么优点吗?
所以有一个参考框架,这是我发现的
来自我为上一篇文章创建的谜语。
在谜语#3中,
- 从
a = 5
中省略var
将覆盖其global
对应项 b
在local
和global
之间仍然两极分化- 底部的
alert()
返回 5*5+4+15 - 4 是
local
b
,15 是global
b
,在第 25 行声明
在谜语#2中,
- 从
b = 4
中省略var
会覆盖其global
对应项 a
在local
和global
之间仍然两极分化- 底部的
alert()
返回 5*3+4+4 - - 5 是
local
a
,3 是global
a
,在第 11 行声明
在谜语#1中,
- 省略两个
local
变量的var
将覆盖所有global
对应项 local
变量和global
变量之间没有区别。- 底部的
alert()
返回 5*5+4+4 - 仅识别
function
内声明的变量
局部变量和形式函数参数将始终覆盖全局变量(或在更高作用域中声明的其他变量)。 但是,除了在函数调用的持续时间内,这些局部变量实际上并不存在。
要看到这一点,请将任何全局变量a
或b
替换为其大写等效项(将任何本地重新声明或用法保留为小写),您会发现您的代码工作方式相同。
No.local
在调用函数之前,Scope 不会覆盖global
范围。
例如:
a = 3;
b = 2;
function line(x) {
a = 5;
b = 4;
return a*x + b;
}
// returns 19 by referencing "global a = 3"
alert(line(a));
b = line(a) - b;
// returns 25 by referencing "local a = 5"
alert(b);
省略var
在调用function line(x)
后global
变量(同名)将忽略