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