生成器函数使用function*声明。html
在生成器函数内部,有一种相似return的语法:关键字yield。两者的区别是,普通函数只能够return一次,而生成器函数能够yield屡次(固然也能够只yield一次)。在生成器的执行过程当中,遇到yield表达式当即暂停,后续可恢复执行状态。函数
一、next方法的参数学习
yield语句自己没有返回值,或者说老是返回undefined。spa
function* foo(x){ var y=2*(yield(x+1)); var z=yield(y/3); return (x+y+z); } var a=foo(5); console.log(a.next()); console.log(a.next()); console.log(a.next());
不懂为何后两个next()返回值里的value的值都是NaN。code
由于:虽然yield后面的表达式有值,yield能够像return同样返回紧跟在yield语句后面的表达式的值。可是yield语句自己没有返回值,或者说老是返回undefined。htm
next()方法能够带一个参数,该参数会被看成上一条yield语句的返回值。blog
第一次使用next()方法时不能带有参数。get
function* foo(x){ var y=2*(yield(x+1)); var z=yield(y/3); return (x+y+z); } var a=foo(5); console.log(a.next()); console.log(a.next(12)); console.log(a.next(13));
本文做者starof,因知识自己在变化,做者也在不断学习成长,文章内容也不定时更新,为避免误导读者,方便追根溯源,请诸位转载注明出处:http://www.cnblogs.com/starof/p/6962607.html有问题欢迎与我讨论,共同进步。io