Javascript var总是覆盖全局变量吗?
假设从Javascript var总是覆盖全局变量吗?,javascript,global-variables,closures,scope,Javascript,Global Variables,Closures,Scope,假设从local变量中省略var将 如果同样缺少var,则始终覆盖同名的全局? 另外,将var与创造性许可一起使用是否有任何好处 因此有一个参考框架,以下是我的发现 根据我为之创作的谜语 在, 从a=5中省略var将覆盖其全局对应项 b在local和global 底部的alert()返回5*5+4+15 4是本地的b。15是第25行声明的全局b 在, 从b=4中省略var将覆盖其全局对应项 a在local和global 底部的alert()返回5*3+4+4- 5是本地a。3是第11行声明
local
变量中省略var
将
如果同样缺少
var
,则始终覆盖同名的全局
?
另外,将
var
与创造性许可一起使用是否有任何好处
因此有一个参考框架,以下是我的发现
根据我为之创作的谜语 在,
- 从
中省略a=5
将覆盖其var
对应项全局
在b
和local
global
- 底部的
返回5*5+4+15alert()
- 4是本地的
。15是第25行声明的b
全局
b
- 从
中省略b=4
将覆盖其var
对应项全局
在a
和local
global
- 底部的
返回5*3+4+4-alert()
- 5是
本地
。3是第11行声明的a
全局
a
- 从两个
变量中省略local
将覆盖所有var
对应变量global
和局部
变量之间没有区别全局
- 底部的
返回5*5+4+4alert()
- 只能识别
函数中声明的变量
要看到这一点,请将任何全局变量
a
或b
替换为其大写等效项(将任何局部重新声明或使用保留为小写),您将发现代码的工作方式相同。否。局部范围在调用函数之前不会覆盖全局范围
一旦调用函数行(x)
,省略var
将忽略全局
变量(名称相同)。它们被称为小提琴,而不是谜语;)你是在问还是在说?请在你的问题中加入相关的代码片段,而不仅仅是对jsfiddles的引用。@ToddMotto只是展示我的发现并要求确认。从我看来,你的发现是正确的。谢谢,我也这么认为。我对“为什么”更感兴趣,但当我回复@jovan时,我意识到了答案。再次感谢。
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);