【问题标题】:JSLint errors: "JSLint 错误:“
【发布时间】:2013-10-12 09:32:28
【问题描述】:

我正在尝试重写一个插件,以便它能够通过 JSLint。我在 300 行脚本中写了大约 3 行,但我被困在这里:

   var __slice = [].slice,
       __indexOf = [].indexOf || function (item) {
        var i = 0,
            l = this.length;
        for (i < l) <<<<< this is where the error is
                  {
                    if (i in this && this[i] === item)
                    return i; 
                  }
      i+=1;
      return -1;};

错误是

 "Expected ';' and instead saw ')'.
        for (i < l)

我不确定如何重写它以符合他们的约定。有什么建议吗?

【问题讨论】:

标签: javascript optimization jslint


【解决方案1】:

这不是与 JSLint 相关的问题,但你的 for 循环语法不正确。

for 循环的语法如下所示:

for (initialization; condition; increment);

一个例子:

for (var i = i; i < 10; i++)

所以在你的情况下,你应该使用:

for (; i < L ;)

注意省略了初始化和增量部分。

或者更好的是,使用 while 循环:

while ( i < L )

【讨论】:

  • 谢谢。为了让 JSLint 对早期的错误感到满意,我无意中把它删掉了。已根据这个有用的指南重新编写,并转向新的错误:impressivewebs.com/javascript-for-loop
  • @Ali 欢迎您。一条建议总是试图让你的代码首先工作,然后尝试优化它并清理它。随着时间的推移,您将获得经验,您的代码将从一开始就得到优化。
  • JSLint 也不接受 for (; i &lt; L ;) 形式。您必须指定所有三个子句,或者根本不指定 (for (;;))。在这里的示例中,while 循环是最好的解决方案。但是还有其他情况——比如仅仅缺少初始化——你必须在更简单的代码(for循环)与让JSLint快乐(while循环)之间进行权衡。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-29
  • 2012-07-14
  • 2011-08-17
  • 2014-11-30
  • 2013-08-10
  • 2012-08-14
  • 2016-03-01
相关资源
最近更新 更多