考虑这段代码。
let array = [1,2,3,4,5]
for(let elem of array) {
console.log(elem)
}
从这里开始,我不会调用任何东西,就像array[Symbol.iterator]().since
我们只能通过在计算其值的表达式后面加上括号来执行函数。这里我们只是写for(let elem of array)
它是如何执行一个名为的函数的array[Symbol.iterator]
?
考虑这段代码。
let array = [1,2,3,4,5]
for(let elem of array) {
console.log(elem)
}
从这里开始,我不会调用任何东西,就像array[Symbol.iterator]().since
我们只能通过在计算其值的表达式后面加上括号来执行函数。这里我们只是写for(let elem of array)
它是如何执行一个名为的函数的array[Symbol.iterator]
?
您可以通过替换来简单地测试它[Symbol.iterator]
,看看会发生什么:
let array = [1,2,3,4,5]
array[Symbol.iterator] = function* () {
yield *['Larry', 'Mo', 'Curley'];
};
for(let elem of array) {
console.log(elem)
}
好问题,实际上循环处理程序是使用内置迭代器和参数for of
映射到循环处理程序上的,为了更好地理解和使用,您可以像下面的代码一样轻松地测试它:for
[Symbol.iterator]
const iterable1 = new Object();
iterable1[Symbol.iterator] = function* () {
yield 1;
yield 2;
yield 3;
yield 4;
yield 5;
};
const arr = [...iterable1];
for(let elem of arr) {
console.log(elem);
}
有关更多信息,请阅读文档