传播运算符和迭代器协议

时间:2017-03-28 08:39:15

标签: javascript

我偶然发现了关于传播运营商的这个例子,并试图了解这里发生了什么:

let str = 'helloworld';
let first, rest;

[first, ...rest] = [...str];
console.log(first); // "h"
console.log(rest);  // ["e", "l", "l", "o", "w", "o", "r", "l", "d"]

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:-1)

所以我读到了扩展运算符以及它如何实现迭代器协议,这就是我解释它的方式:

let str = 'helloworld';
let first, rest = [];
let itStr = str[Symbol.iterator]();

first = itStr.next().value;

while (val = itStr.next()) {
  if (val.done) {
    break;
  }
  rest.push(val.value);
};
console.log(first); // "h"
console.log(rest);  // ["e", "l", "l", "o", "w", "o", "r", "l", "d"]