有人可以向我解释以上内容如何生成警告。
应该注意的是,在询问之前,$ me变量不是在函数调用之外定义的。$ me的范围肯定应该在“ if”语句的末尾结束。
我觉得我在这里缺少明显的东西,但不能完全动弹。
在JavaScript中,变量不限于块范围。
var foo = "a";
if (true) {
var foo = "b";
}
console.log(foo); // "b" not "a"
变量声明被吊起(移至顶部),因此实际上是这样说的:
var foo;
var foo;
foo = "a"
if (true) {
foo = "b";
}
console.log(foo); // "b"
变量始终被提升到作用域的顶部。通常,只有功能才有作用域。if
不会创建它自己的范围。也不对for
,while
甚至switch
。
这是很容易犯这个错误(即使是经验丰富的程序员),所以JSHint让你知道这件事。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句