根据documentation中funcscope
选项的描述,JSHint似乎认识到在“预期范围”中声明的变量的效用,例如控制结构等(尽管实际上在JS中的函数中只有一个范围)。
为什么它会引发以下错误,说多次声明i
?
if (condition) {
var i = 1;
//
}
else {
var i = 2;
//
}
将funcscope
设置为true或false无济于事。有没有办法抑制这个错误?
(我喜欢“逻辑/预期”变量范围,并且“定义”变量尽可能接近它们所需的位置。当代码块需要移动时帮助我。
编辑:
我知道变量吊装。但我不赞成道格拉斯·克罗克福德关于在函数顶部声明所有var
的观点。这使得代码更难以阅读,并且当您必须移动代码片段时更难以重构。
如果您在JSHint主页上阅读funcscope
的文档,它还会讨论预期范围,这正是我所指的。我在这个背景下问我的问题)
答案 0 :(得分:1)
你做错了。您的代码等同于编写:
var i;
var i; // duplicate!
if (condition) {
i = 1;
} else {
i = 2;
}
如您所见,您定义了i
两次。我不相信有一面旗帜可以压制它。
答案 1 :(得分:-1)
如果你不想和道格拉斯一起去,那么
if (condition) {
var i = 1;
//
}
else {
i = 2;
//
}
只需删除第二个var,因为你已经使用了decalred var。你真的不需要声明var两次。