对于此代码:
var i = 0;
for (i < menuitem.length; i += 1;)
JSlint返回:
期望一个条件表达式,而是看到一个赋值。
预期标识符,而是看到&#39;)&#39;。
拒绝继续扫描。 这段代码工作正常,但有什么不对?我怎么能用&#34; if&#34;声明? (如果这就是jslint的意思)。
感谢您的帮助!
答案 0 :(得分:2)
是的,JSLint非常恶毒。正如其他人所指出的那样,你并没有在正确的位置填充内容,但除此之外,JSLint要求你在<{1}}循环的初始化部分中放入某些。不过,你可以做几个选项让它玩得很好而不会弄乱你的逻辑。我最喜欢的是重置for
(即使它已经设置好了):
i
这使JSLint感到高兴,并且如果您决定将var i = 0;
for (i = 0; i < menuitem.length; i += 1) {
/** do stuff **/
}
用于同一词法范围内的另一个i
循环,也可以确保for
被重置。另一个选择是在那里抛出一个null
来填充空间(如果你不想重置i
的值):
var i = 0;
for (null; i < menuitem.length; i += 1) {
/** do stuff **/
}
两者都很好,并且安抚了令人担忧的JSLint。但是,如果您只是将初始化部分留空(除了JSLint),没有人会真正关心。你可以试试JSHint,因为它对这类事情有点宽容。
答案 1 :(得分:1)
你的for
循环有点奇怪,第二部分应该是循环的条件,而不是你有一个赋值。
您必须始终按顺序排列(initialisation; condition; step)
。
var i = 0;
for (; i < menuitem.length; i += 1)
我刚把你的分号从结尾移到了开头。或者,如果您愿意,可以将变量声明和赋值放在第一部分中。
答案 2 :(得分:0)
for (var i = 0; i < menuitem.length; i += 1) {
// code
}
或者
var i = 0;
for (; i < menuitem.length; i += 1) {
// code
}
答案 3 :(得分:0)
从你的代码片段中,我将假设我只是一个用来控制循环周期数的变量。正确的代码是
for (var i = 0; i < menuitem.length; i += 1) {
// code
}
这是标准化的声明和语法 - 至少对于我现在能想到的语言而言。这就是这种循环的重点 - for循环是这样设计的,所以如果他/她想做一个while循环,作者可以简单地编写一行代码而不是更多代码。
答案 4 :(得分:0)
var i;
for (i = 0; i < menuitem.length; i += 1) {
// code
}
var应该在外面说jslint:s