3

考虑这段代码。

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]

4

2 回答 2

1

您可以通过替换来简单地测试它[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)
}

于 2018-09-29T05:24:41.447 回答
0

好问题,实际上循环处理程序是使用内置迭代器和参数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);
}

有关更多信息,请阅读文档

于 2018-09-29T05:33:29.570 回答