根据其文档funcscope
中对该选项的描述, JSHint 似乎认识到在“预期范围”中声明的变量的效用,例如控制结构等(即使实际上在 JS 中的函数内只有一个范围)。
那么,为什么它会引发以下错误,说它i
被多次声明?
if (condition) {
var i = 1;
//
}
else {
var i = 2;
//
}
设置funcscope
为 true 或 false 无济于事。有没有办法抑制这个错误?
(我喜欢有“逻辑/预期”的变量范围,并且“定义”变量尽可能接近它们需要的位置。在需要移动代码块时帮助我。
编辑:我知道变量提升。但我不同意 Douglas Crockford 关于var
在函数顶部声明所有 s 的观点。这使得代码更难阅读,并且当您必须移动代码片段时更难重构。如果您阅读funcscope
JSHint 主页上的文档,它还谈到了预期范围,这也正是我所指的。我在这种情况下问我的问题)