Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 扩展算子与迭代器协议_Javascript - Fatal编程技术网

Javascript 扩展算子与迭代器协议

Javascript 扩展算子与迭代器协议,javascript,Javascript,我偶然发现了这个关于spread运算符的示例,并试图了解这里发生了什么: 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"] 有人能帮我吗?所以我读到了关于spread运算符的内容,以及它是如何实现迭代器协议的,下面

我偶然发现了这个关于spread运算符的示例,并试图了解这里发生了什么:

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"]

有人能帮我吗?

所以我读到了关于spread运算符的内容,以及它是如何实现迭代器协议的,下面是我对它的解释:

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"]