【发布时间】:2016-06-16 13:40:11
【问题描述】:
你能帮我理解为什么 JS 在这里工作吗?
var timer = 3;
var func = function() {
alert(timer);
var timer = 5;
}
func();
它返回“未定义”。
如果我这样做了
var timer = 3;
var func = function() {
alert(timer);
timer = 5;
}
func();
它按预期工作(警报 3)。
这是我没有正确理解的范围。 JS不应该在警报之后覆盖“计时器”的定义吗?
仅在 chrome 上测试。
谢谢你们。
【问题讨论】:
-
它被称为
variable hoisting.. 只需查找相同的。 -
吊装。每当您定义
var xxx时,var定义就会移动到作用域的顶部(在本例中是函数的第一行;在alert()之前)。
标签: javascript undefined redefine