Jslint错误:期望一个条件表达式,而是看到一个赋值

时间:2012-09-10 02:07:27

标签: javascript jslint

对于此代码:

var i = 0;
for (i < menuitem.length; i += 1;)

JSlint返回:

  

期望一个条件表达式,而是看到一个赋值。

     

预期标识符,而是看到&#39;)&#39;。

拒绝继续扫描。 这段代码工作正常,但有什么不对?我怎么能用&#34; if&#34;声明? (如果这就是jslint的意思)。

感谢您的帮助!

5 个答案:

答案 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