用Javascript中的if语句包装for循环 – 循环遍历数组

前端之家收集整理的这篇文章主要介绍了用Javascript中的if语句包装for循环 – 循环遍历数组前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
JSLint一直在抱怨这样的事情
var myArray = [1,2,3];
for (var value in myArray)
{
   // BLAH
}

说我应该把它包装在if语句中.我知道如果你在一个对象的属性上循环,你需要包装它,但是我应该在if语句中放入什么来进行正确的过滤.

另外,当我做类似的事情

for (var i = 0; i < 10; i++)
{
   // foo
}

for (var i =0; i < 20; i++)
{
   // bar
}

它抱怨说我已经被定义了.除了使用不同的变量名之外,我该如何防止这种情况?

解决方法

JSLint发出了许多并不是真正有害的东西.在这种情况下,抱怨for …是正确的,因为这是循环数组的错误构造.

这是因为您不仅会获得数字键,还会获得已添加到数组或其Array.prototype中的任何其他任意属性.后者通常来自框架添加的扩展实用程序功能.

虽然你可以用hasOwnProperty打败那个案例来检查它不是原型成员,但是它比用(for var = 0 …)的正确方法更难以解决,所以为什么要这么麻烦.

此外,对于… in,您不一定会按照您的预期按数字顺序获取项目.

It complains that i has already been defined. How do I prevent this other than using different variable names?

@H_403_25@

是的,你可以忽略那一个.

它希望你从第二个中删除var(i …,因为在同一范围内两次声明一个变量没有做任何事情.但是我建议将var留在那里,因为它不会造成任何伤害,并且如果你将循环移动到另一个块,你不希望它突然在全局变量上涂鸦.

猜你在找的JavaScript相关文章