首页 > 编程知识 正文

object.freeze() 的作用,yield怎么用

时间:2023-05-03 18:43:57 阅读:136033 作者:3130

目录概念yieldyield*相关资源

概念

yield和yield*都是配合Generator使用的。

yield yield为关键字,其语法如下。

[rv]=yield [expression]; expression :是由Generator函数返回的遍历对象调用next方法的值。 rv :是遍历对象并调用next方法。 传递给next方法的参数。 本节简要介绍了next方法。 语法如下。

gen.next(value ) value :传递给generator函数的值,即上面的rv。这里有趣的是传递给next方法的值value。 用例子来看吧。

function * _ testyieldexpression ({ letvalue=' '; value=yield 'yield value '; console.info (1value is : $ { value } ); //输出1value=yield 'yield value '; console.info (2value is : $ { value } ); //输出2返回' over '; } let _ test iterator=_ testyieldexpression (; let _res=_testIterator.next (; console.info (1: noparamstonext,result is: ${_res.value} ); //输出3 _ RES=_ test iterator.next (paramsfromnext ); console.info (2: paramstonext,result is: ${_res.value} ); //输出4_res=_testIterator.next (; console.info(:Paramstonext,result is: ${_res.value} ); //输出5的输出如下所示。

1:no params to next,result is 3360 yield value1value is : paramsfromnext 2: paramstonext, result is : yield value2value is : undefined : paramstonext, result is: over注释标记了一些输出语句,输出1在第二次调用next方法时执行,其中的value值是传递给next方法的参数。 _testYieldExpression函数中可以看到value=yield 'yield value ',所以可以理解为首次执行next函数时语句yield 'yield value '中没有,但有点混乱

yield* yield*是表达式,因此返回值。 语法如下。

yield* [[expression]]; expression :可遍历的对象、数组或其他Generator函数的执行表达式等

其实简单来说,就是根据某个规则将多个yield语句合并在一起。 例如以下所示。

function* g3 () { yield * [ 1,2 ]; yield* '34 '; Yield*Array.from(arguments; } var iterator=G3 (5,6 ); console.log(iterator.next ) ); //{value: 1,done : false } console.log (iterator.next (); //{value: 2,done : false } console.log (iterator.next (); //{value: '3',done : false } console.log (iterator.next (); //{value: '4',done : false } console.log (iterator.next (); //{value: 5,done : false } console.log (iterator.next (); //{value: 6,done : false } console.log (iterator.next (); //{value: undefined,done: true}相关资源MDN——yield*

MDN ——是

《ECMAScript 6 入门》 ——jsdrjb

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。