函数和函数有什么区别*
What is the difference between function and function*
用 function
和 function*
创建的生成器函数有什么区别
function a(i){
for(;i>0;i--){
yield i*i;
}
}
function *b(i){
for(;i>0;i--){
yield i*i*i;
}
}
使用 function
创建的生成器是早期 ES6 草案的一部分。
//They have differrent prototypes
console.log(a.prototype.constructor.constructor,b.prototype.constructor.constructor);//function Function() function GeneratorFunction()
let a1=a(10);
let b1=b(10);
//both create generators...
console.log(a1,b1);//Generator { } Generator { }
//but different generators: one returns value, another returns an object of special format
console.log(a1.next(),b1.next());//100 Object { value: 1000, done: false }
for(let a2 of a1)console.log(a2);
for(let b2 of b1)console.log(b2);
//They are equal when used in for ... of.
用 function
和 function*
function a(i){
for(;i>0;i--){
yield i*i;
}
}
function *b(i){
for(;i>0;i--){
yield i*i*i;
}
}
使用 function
创建的生成器是早期 ES6 草案的一部分。
//They have differrent prototypes
console.log(a.prototype.constructor.constructor,b.prototype.constructor.constructor);//function Function() function GeneratorFunction()
let a1=a(10);
let b1=b(10);
//both create generators...
console.log(a1,b1);//Generator { } Generator { }
//but different generators: one returns value, another returns an object of special format
console.log(a1.next(),b1.next());//100 Object { value: 1000, done: false }
for(let a2 of a1)console.log(a2);
for(let b2 of b1)console.log(b2);
//They are equal when used in for ... of.