传统的数组遍历
var arr = [1, 2, 3];
for (var i = 0; i < arr.length; i++) {
var val = arr[i];
}
问题:
如果产生多层嵌套, 就会造成追踪多个变量, 容易引发问题, 性能也会更低
更多的时候, 我们只想使用数组中的元素, 并不想使用索引
解决:
使用 for..of 遍历可迭代对象
var arr1 = [1, 2, 3];
var arr2 = [4, 5, 6];
for (var v1 of arr1) {
for (var v2 of arr2) {
console.log(v1, v2);
}
}
使用迭代器
ES5代码模拟
function createIterator(items) {
var i = 0;
return {
next: function() {
var done = (i >= items.length);
// items[i++] 每次使用后i+1
var value = !done ? items[i++] : undefined;
return {
done: done,
value: value
};