现在我们在JS中有一个for循环。是否可以无缝地用于迭代数组而不是for (let i = 0, len = array.length; i < len; i++) {...}
,或者是否有任何警告使得将它用于数组是一种不好的做法?
答案 0 :(得分:2)
是的,没关系。
好吧,除非您为Symbol.iterator
指定了自定义值,但仍希望循环从0到长度。
var arr = [1,2,3,4];
arr[Symbol.iterator] = function*() {
yield "custom";
yield "iterator";
};
console.log('Old for loop:');
for (let i = 0; i < arr.length; i++) console.log(' ', arr[i]);
console.log('New for-of loop:');
for (let item of arr) console.log(' ', item);
答案 1 :(得分:1)
是的,for... of
适用于数组,因为它们是iterable。
您可以通过检查Array实例是否有Symbol.iterator
方法在浏览器的控制台中验证:
[][Symbol.iterator]
> values() { [native code] }
...而且,在同义上,你可以用for... of
来迭代它们!
答案 2 :(得分:0)
在我看来,for-of循环的主要目的是迭代数组。使用for-in循环迭代数组的事实被认为是一种不好的做法与它无关。此外,for-in循环可用于迭代任何对象,但for-of循环只能用于迭代iterable的对象。