【发布时间】:2011-12-23 20:38:32
【问题描述】:
通过 jsHint 传递这段代码:
var A = function (spec) {
"use strict";
var a = function () {
return b();
};
var b = function () {
return 5;
};
a();
};
返回此错误:
Line 4: return b();
'b' is not defined.
我知道这可能与此处解释的“提升”有关:JavaScript function order: why does it matter?
但是,以下代码返回相同的错误:
var A = function (spec) {
"use strict";
function a () {
return b();
}
function b () {
return 5;
}
a();
};
如果我理解正确,至少第二个代码 sn-p 不应该返回错误。我弄错了吗?
即使考虑到提升机制,我仍然不明白为什么第一个代码 sn -p 应该是错误的。函数a 仅在函数b 定义后调用,所以b 将在a 的闭包中。是我的代码错了还是jsHint错了?
我知道这个问题纯粹是学术问题,因为代码在所有浏览器中都按预期工作。不过,我想知道为什么 jsHint 会抛出错误。
【问题讨论】:
标签: javascript jslint jshint