对于此代码:
var i = 0;
for (i < menuitem.length; i += 1;)
JSlint 返回:
需要一个条件表达式,而是看到一个赋值。
需要一个标识符,而是看到“)”。
并拒绝继续扫描。此代码工作正常,但有什么问题?我怎么能用“if”语句来写这个?(如果这就是 jslint 的意思)。
谢谢你们的帮助!
对于此代码:
var i = 0;
for (i < menuitem.length; i += 1;)
JSlint 返回:
需要一个条件表达式,而是看到一个赋值。
需要一个标识符,而是看到“)”。
并拒绝继续扫描。此代码工作正常,但有什么问题?我怎么能用“if”语句来写这个?(如果这就是 jslint 的意思)。
谢谢你们的帮助!
是的,JSLint 非常恶毒。正如其他人指出的那样,您没有在正确的位置填写内容,但除此之外,JSLint 要求您在for
循环的初始化部分中添加一些内容。不过,有几个选项可以让它在不影响逻辑的情况下发挥得很好。我最喜欢的是重置i
(即使它已经设置):
var i = 0;
for (i = 0; i < menuitem.length; i += 1) {
/** do stuff **/
}
这让 JSLint 很高兴,并且还确保i
如果您决定将它用于for
同一词法范围内的另一个循环,它会被重置。另一种选择是在null
其中扔 a 以填充空间(如果您不想重置 的值i
):
var i = 0;
for (null; i < menuitem.length; i += 1) {
/** do stuff **/
}
两者都可以正常工作并安抚令人担忧的 JSLint。但是,没有人会真正关心您是否将初始化部分留空(除了 JSLint)。您可以尝试 JSHint,因为它对这类事情更加宽容。
你的for
循环有点奇怪,第二部分应该是循环的条件,而不是你有一个分配。
您必须始终整理好零件(initialisation; condition; step)
。
var i = 0;
for (; i < menuitem.length; i += 1)
我只是将您的分号从末尾移到开头。或者,如果您愿意,您可以将变量声明和赋值放在第一部分中。
for (var i = 0; i < menuitem.length; i += 1) {
// code
}
或者
var i = 0;
for (; i < menuitem.length; i += 1) {
// code
}
从您的代码片段中,我将假设 i 只是一个用于控制循环周期数的变量。正确的代码是
for (var i = 0; i < menuitem.length; i += 1) {
// code
}
那是标准化的声明和语法——至少对于我现在能想到的语言来说。这就是这种循环的真正意义——for循环是这样设计的,所以作者可以简单地编写一行代码,而不是如果他/她想做一个while循环的话。
找到了!以下是验证的准确答案:
var i;
for (i = 0; i < menuitem.length; i += 1) {
// code
}
var 应该在外面说 jslint :s