Jslint 错误:需要条件表达式,而是看到分配
Jslint error: Expected a conditional expression and instead saw an assignment
对于此代码:
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 满意,并且还确保如果您决定将其用于同一词法范围内的另一个for
循环,i
将被重置。另一种选择是在那里扔一个null
来填充空间(如果您不想重置 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
}
找到了!以下是验证的确切答案:
var i;
for (i = 0; i < menuitem.length; i += 1) {
// code
}
var 应该在外面说 jslint :s
从你的代码片段中,我将假设我只是一个用于控制循环周期数的变量。正确的代码是
for (var i = 0; i < menuitem.length; i += 1) {
// code
}
这就是标准化的声明和语法 - 至少对于我现在能想到的语言。这就是这种类型的循环的真正意义所在 - for 循环是这样设计的,因此作者可以简单地编写一行代码,而不是如果他/她想做一个 while 循环,可以编写更多代码。
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 在循环中分配json值时,值被覆盖
- 动态分配GA增强型电子商务跟踪器
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- java.net和javascript之间正则表达式的差异
- Grunt匹配正则表达式
- 不同浏览器中的空白字符正则表达式行为
- ng init中的表达式无法使用ng repeat
- 正则表达式在字符串中找到base64
- Jslint 错误:需要条件表达式,而是看到分配
- 使用一个表达式将两个变量分配给相同的值
- 你能在javascript中分配一个引用表达式吗?
- 对函数表达式和我分配函数表达式的变量使用相同的标识符是否存在任何问题
- 获取:错误:ngModel:nonassign不可分配表达式
- 如何将正则表达式分配给变量,以便以后在字符串中使用
- 是一个未分配变量的表达式,该变量无论如何都保留
- JavaScript函数表达式分配给一个变量(通过引用或值传递?)
- 函数表达式本身不能将名称分配给另一个值
- Internetexplorer-Javascript:将命名函数分配给变量(命名函数表达式)时不一致
- 错误:ngModel:不可分配的表达式