Javascript/Jquery的范围是什么?

Mat*_*don 1 javascript jquery

破碎的范围

有人可以向我解释上面是如何产生警告的.

在被问到之前应该注意,$ me变量没有在函数调用之外定义.当然,$ me的范围应该在"if"语句的末尾结束.

我觉得我在这里遗漏了一些明显的东西,但不能完全指责它.

Hal*_*yon 5

在JavaScript中,变量不限于块范围.

var foo = "a";
if (true) {
    var foo = "b";
}
console.log(foo); // "b" not "a"
Run Code Online (Sandbox Code Playgroud)

变量声明被提升(移到顶部),所以这真的说:

var foo;
var foo;
foo = "a"
if (true) {
    foo = "b";
}
console.log(foo); // "b"
Run Code Online (Sandbox Code Playgroud)

变量总是被提升到范围的顶部.通常只有函数具有范围.if不会创建自己的范围.既不是for,while也不是switch.

容易犯这个错误(即使是经验丰富的程序员),所以JSHint会让你知道它.