JSLint一直在抱怨这样的事情
var myArray = [1, 2, 3];
for (var value in myArray)
{
// BLAH
}
Run Code Online (Sandbox Code Playgroud)
说我应该把它包装在if语句中.我知道如果你循环一个对象的属性你需要包装它,但是在这里我应该在if语句中放置什么来进行正确的过滤.
另外,当我做类似的事情
for (var i = 0; i < 10; i++)
{
// foo
}
for (var i =0; i < 20; i++)
{
// bar
}
Run Code Online (Sandbox Code Playgroud)
它抱怨说我已经被定义了.除了使用不同的变量名之外,我该如何防止这种情况?
JSLint发出了许多并不是真正有害的东西.在这种情况下抱怨是正确的for...in,因为这是循环数组的错误构造.
这是因为您不仅会获得数字键,还会获得已添加到数组或其Array.prototype中的任何其他任意属性.后者通常来自框架添加的扩展实用程序功能.
虽然你可以hasOwnProperty通过检查它不是原型成员来打败那个案例,但是这样做比使用正确的方法更加丑陋,for (var i= 0...)为什么还要麻烦.
此外,for...in您不一定会按照您的预期按数字顺序获取项目.
它抱怨说我已经被定义了.除了使用不同的变量名之外,我该如何防止这种情况?
是的,你可以忽略那一个.
它希望您var从第二个中删除它for (i...,因为在同一范围内声明两次变量不会做任何事情.但是我会建议离开var那里,因为它没有任何伤害,如果你将循环移动到另一个块,你不希望它突然在全局上涂鸦.
真的,你不必听jslint.但如果你真的想要通过(这很好)你可能会这样做:
var myArray = [1, 2, 3];
for (var value in myArray)
{
if (myArray.hasOwnProperty(value)) {
// BLAH
}
}
Run Code Online (Sandbox Code Playgroud)
对于第二部分,您必须将它们放在函数中或使用不同的变量.另一种解决方案是使用i而不是var i第二次,因为它已经定义了......
| 归档时间: |
|
| 查看次数: |
6372 次 |
| 最近记录: |