Javascript JSLint所说的';意外表达式';i';处于报表位置;?

Javascript JSLint所说的';意外表达式';i';处于报表位置;?,javascript,jslint,Javascript,Jslint,我在JavaScript中有一个for循环,我已经在JSLint中运行了几次。在过去,我收到了意外的++错误,我决定进行重构,使代码更具可读性。大约一个月后,JSLint发布了一个更新,现在正在显示警告 语句位置出现意外表达式“i”。 对于(i;i

我在JavaScript中有一个for循环,我已经在JSLint中运行了几次。在过去,我收到了
意外的++错误
,我决定进行重构,使代码更具可读性。大约一个月后,JSLint发布了一个更新,现在正在显示警告

语句位置出现意外表达式“i”。 对于(i;i
//请参见JSLint.com了解我为什么退出I初始化,并将I=I+1替换为I++
//及http://stackoverflow.com/questions/3000276/the-unexpected-error-in-jslint
var i=0;
对于(i;i

恢复到
var i=0
i++
并不能改善警告,JSLint只是停止处理。

编辑:似乎我搞错了。有关更详细的解释,请参阅ruffin的回答

问题似乎出在jslint.com上。记住,它仍处于测试阶段。如果使用旧版本(),问题似乎会消失

下面是old.jslint.com的输出:
主要是关于未定义的范围…等等

以下是jslint.com的输出: 这是关于范围没有得到定义…等等

意外的“为”

连同

语句位置出现意外表达式“i”

现在,我想你应该只使用jslint.com的旧版本。

看起来不只是因为jslint处于beta状态。这是因为Crockford默认情况下不再允许对
语句使用
看起来我需要留出一个周末来和。奇怪的事情正在K圈中进行,伙计

ES6最重要的新特性是正确的尾部调用 没有新的语法,所以JSLint看不到它。但它使递归更加复杂 吸引人,这使得循环,特别是循环,要少得多 吸引人

然后在
/*jslint*/
指令部分的主表中:

描述:对
语句的容忍

选项:
用于

含义:
true
如果应该允许
for
语句

下表还有一点解释:

JSLint不建议对
语句使用
。请使用数组方法
改为使用
forEach
。for
选项将抑制某些警告 JSLint接受的
for
格式受到限制,不包括新的ES6格式

因此,要在新的JSLint中生成此lint,您至少需要以下代码(使用
for
指令集):

/*jslint-white:true,for:true*/
/*全局范围、标题*/
功能测试()
{
“严格使用”;
var i;
对于(i=0;i
请注意,我仍然必须移动
I
的初始化,因此您可能仍然有一个值得考虑的问题。我也承认;我不确定为什么
I+=1
更好。但现在看起来这是一个很难的要求。没有
plusplus
选项


还要注意,如果代码没有包装在函数中(我包装在上面的
test
),您将在顶层得到
意外的“for”。
,这是一个新错误。

没有理由将该
i
放在for循环的第一部分,如果您在其他地方进行声明和初始化,则只需将该部分留空,并保留分号,直接在Visual Studio中删除导致警告的部分,并显示为<代码>意外的“for”。
预期的“;”而不是“saw”)。
在JSLint中。我非常确定for需要所有三个组件才能正常工作。我个人认为Visual Studio是一个糟糕的IDE。
for(;ii如果您仍然不相信我,请查看您在哪里看到
var I=0;for(i;…
优先于
var i;用于(i=0;…
在JSLint中?我不一定在中看到,也不一定在JSLint指令中看到。我错过了标题旁边的beta文本。在看到它消失之前,我将推迟做任何事情。旧的JSLint站点给了我预期的结果。@Jabberwockyde编译器很好。很高兴我能提供帮助!我正在将已接受的答案更改为ruffin的他对这个错误背后可能发生的事情提供了更好的解释。谢谢你的帮助。这些问题可能对jslint论坛或阅读文档更好,但我想我会检查一下,看看你是否知道。我检查了假设ES6,容忍“for statement”和“凌乱的空白”。还有其他的错误吗确认我应该使用能够更好地与“意外表达式”消息交互的界面,还是您使用了自定义的/*jslint ignore*/tags?只使用了上面的代码。我尝试将
es6:true
添加到
jslint
指令注释中,效果也不错。
//See JSLint.com for why I pulled out i initialization and i = i+1 instead of i++
//and http://stackoverflow.com/questions/3000276/the-unexpected-error-in-jslint
var i = 0;
for (i; i < scope.formData.tabs.length; i += 1) {
    scope.formData.tabs[i].show = false; // hide all the other tabs 

    if (scope.formData.tabs[i].title === title) {
        scope.formData.tabs[i].show = true; // show the new tab 
    }
}
/*jslint white:true, for:true */
/*global scope, title */

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

    for (i=0; i < scope.formData.tabs.length; i = i + 1) {
        scope.formData.tabs[i].show = false; // hide all the other tabs 

        if (scope.formData.tabs[i].title === title) {
            scope.formData.tabs[i].show = true; // show the new tab 
        }
    }
}