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

时间:2017-06-15 15:17:06

标签: javascript for-loop jslint

我正在尝试组合各种代码,因此我想提前声明i的开头。

OLD

var i,
  max_i = 4;


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

NEW

var i = 2,
  max_i = 4;


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

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

  • 预期')'而是看到'&lt; ='。
  • 预期';'而是看到'我'。
  • 预期'{'和intead看到'max_i'。

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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
    }
}());

答案 2 :(得分:-2)

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

var i , max_i = 4;

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

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

最后,要将值增加1,您可以使用++ unaray运算符,而不是+=1