Gon*_*bia 0 javascript destructuring ecmascript-6
我找到了这个例子,我很惊讶发电机的最终值来自发电机的方式.这是代码:
function* foo() {
yield 'a';
yield 'b';
yield 'c';
}
const [...values] = foo();
Run Code Online (Sandbox Code Playgroud)
根据我对生成器的理解,我认为对生成器执行进行解构等同于:
const array = [];
for(const val of foo()) {
array.push(val)
}
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是:这是获取生成器函数值的有效方法以及实现此目的的其他方法吗?
该迭代 (迭代器和迭代器) 协议为您提供的可能性的海洋......
function* foo() {
yield 'a';
yield 'b';
yield 'c';
}
const [...values] = foo();
console.log(...values);Run Code Online (Sandbox Code Playgroud)
function* foo() {
yield 'a';
yield 'b';
yield 'c';
}
const [a, b, c] = foo();
console.log(a, b, c);Run Code Online (Sandbox Code Playgroud)
function* foo() {
yield 'a';
yield 'b';
yield 'c';
};
let values = [];
for (const str of foo()) {
values.push(str);
}
console.log(values[0], values[1], values[2]);Run Code Online (Sandbox Code Playgroud)
function* foo() {
yield 'a';
yield 'b';
yield 'c';
}
const [a, b, ...values] = Array.from(foo());
console.log(a, b, values.toString());Run Code Online (Sandbox Code Playgroud)
let foo = (function* () {
yield 'a';
yield 'b';
yield 'c';
})();
console.log(foo.next().value, foo.next().value, foo.next().value);Run Code Online (Sandbox Code Playgroud)