尝试重写for循环,得到jslint错误
Posted
技术标签:
【中文标题】尝试重写for循环,得到jslint错误【英文标题】:Trying to rewrite for loop, get jslint error 【发布时间】:2017-11-18 04:01:11 【问题描述】:我正在尝试组合各种代码,所以我想提前声明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”。 预期为“”,而实际看到的是“max_i”。代码在两种情况下都能正常执行。
【问题讨论】:
什么版本的 jshint?我没有看到报告的这些错误 版本 1.0.4,使用 netbeans(最新) 【参考方案1】:for (i; i<= max_i; i += 1)
//things
【讨论】:
【参考方案2】: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
());
【讨论】:
我一直在使用“use strict”,如果我不使用它会抱怨:) 啊,好吧 :) 我在 sn-p 中没有看到它。【参考方案3】:您可以预先声明和初始化i
,但您仍必须在循环配置中将其设置为循环变量。而且,如果你在循环配置中初始化它会更清楚,而不是在上面,因为调试会更容易。
var i , max_i = 4;
for (i = 2; i <= max_i; i++)
//things
此外,最好始终将左大括号 () 与其定义的语句放在同一行,因为在 javascript 中存在某些情况,将其放在下一行可能会导致错误由于自动插入分号的代码。
最后,要将值加一,您可以使用 ++
unaray 运算符,而不是 +=1
。
【讨论】:
1.我认为这只是编码风格的问题。我更喜欢他们排队。从来没有问题。 2.如果我使用++操作符jslint报错,所以我改成了i+=1。 “但你仍然必须在循环配置中将它设置为循环变量”为什么必须?var i = 0; for(;;) console.log(i++); if(i> 1) break;
@AllisonC 正如我在回答中所说,这是一个常见的误解,认为这只是编码风格的偏好。在适当的情况下,这种风格可能会导致代码中出现实际错误。
@YuryTarabanko 因为您的示例只不过是一个while
循环。要正确使用 for
循环,您需要将其设置为正常工作。
@AllisonC [叹气] 抱歉,根据您的经验,您还没有了解到这一重要而真实的事实。根据我的经验,我从来没有在滑雪时摔断过腿。再说一次,我从来没有滑雪过。尽管如此,它还是存在的:***.com/questions/3641519/…以上是关于尝试重写for循环,得到jslint错误的主要内容,如果未能解决你的问题,请参考以下文章
带有闭包的 JavaScript For 循环导致 JSLint 警告