尝试重写for循环,得到jslint错误

Trying to rewrite for loop, get jslint error

我正在尝试组合各种代码,所以我想提前声明 i 的开始。

var i,
  max_i = 4;


for (i = 2; i<= max_i; i += 1)  
{
  //things
}

var i = 2,
  max_i = 4;


for (; i<= max_i; i += 1)  
{
  //things
}

问题是我在 JSLint 中收到各种错误

代码在两种情况下都可以正常执行。

您可以预先声明和初始化i,但您仍然必须在循环配置中将其设置为循环变量。而且,如果你在循环配置中初始化它会更清楚,而不是在上面因为调试会更容易。

var i , max_i = 4;

for (i = 2; i <= max_i; i++) {
  //things
}

此外,最好始终将左大括号 (}) 与其定义的语句放在同一行,因为在 JavaScript 中存在某些情况,将其放在由于自动分号插入,下一行可能会导致代码中出现错误。

最后,要将值加一,您可以使用 ++ 单数组运算符,而不是 +=1

for (i; i<= max_i; i += 1)  
{
  //things
}

JSLint 帮助你写出更好的代码,相信它,这与品味无关。

它抱怨因为不初始化 for() 被认为是丑陋的(糟糕的风格)。

您应该一如既往地初始化它。我也会尽量不定义变量,而是声明它们,然后初始化它们,如下所示。我现在也会使用 "use strict" 。不这样做有点不愉快。外部函数是为了避免全局和非函数范围的代码:

/*jslint for */

(function () {
    "use strict";
    var i;
    var max_i;

    max_i = 4;
    for (i = 2; i <= max_i; i += 1)
    {
      // things
    }
}());