你能帮我理解JS为什么这样工作吗?Javascript未定义的变量函数内部重新定义
var timer = 3;
var func = function() {
alert(timer);
var timer = 5;
}
func();
它返回我“未定义”。
如果我做
var timer = 3;
var func = function() {
alert(timer);
timer = 5;
}
func();
它按预期工作(警报3)。
这是与范围,我不明白正确的东西。 不应该在警报之后覆盖“timer”的定义吗?
仅在铬上进行测试。
谢谢你们。
它被称为'变量提升'..只是查找相同的。 – gurvinder372
吊装。无论何时定义'var xxx','var'定义都会被移动到作用域的顶部(在本例中为函数的第一行;在alert()之前)。 – h2ooooooo