当通过 JSLint 运行以下 Javascript 代码时:
(function () {
var i = 'a';
console.log(i);
function foo () {
var i = 'b';
console.log(i);
}
foo();
console.log(i);
foo();
}());
我在 JSLint 中收到以下错误:
#1 Redefinition of 'i' from line 4.
var i = 'b'; // Line 7, Pos 13
#2 Unused 'i'.
var i = 'a'; // Line 4, Pos 9
#3 Unused 'foo'.
function foo () { // Line 6, Pos 14
我的问题:
为什么明明在调用foo()却说未使用?
为什么说函数作用域
var i = 'b'
是对它上面那个的重新定义为什么说第一个
var i = 'a'
定义未被使用?
最佳答案
您将获得 i
的重新定义,因为它存在于两个范围内。
这本身并不是真正的问题,但 Crockford 认为这是一件事会引起混淆,因此他的工具可以捕捉到它。
关于javascript - JSlint:在函数范围内重新定义 i,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23301315/