zoukankan      html  css  js  c++  java
  • 3-4 第三天 Generator生成器

    Generator是ES6里面的新增规范,ES6其实就是ES2015。ES5、ES6、ES7这些术语大家上网一查就都明白了。JavaScript是一个范程,就是我们说的JS。ES就是ECMA Script,是JavaScript标准的书面说法。ES4、5、6、7其实是JS这门语言发展中的不同的版本。在不同的版本中赋予了这门语言不同的能力。

    生成器的函数会返回一个生成器的对象

    yield n返回n。调用的时候按照我们的理解genObj是会立马执行的。传入的值是2,循环了3次以后,这个n的值就变成了5。有了yield关键字以后,这里的结果就并不一样了。调用gen函数的时候,拿到的这个genObj,它其实是一个迭代器对象,并不会去执行的,需要每次调用这个迭代器的next()方法,才会从上一次暂停的地方开始执行,直到遇到下一个yield语句。所以这里yield语句的作用就是暂停执行后面的代码。当再次调用next()方法,才会继续往下执行。所以我们可以猜出这里的执行结果。第一次执行next()的时候,传进去的值是2,然后n执行+1,然后遇到yield关键字会暂停,然后这个时候返回n的这个值,也就是3。然后再执行next(),这个时候之前保存的堆栈中n的值是3,所以这里是执行+1,然后返回的值就是4。那再调用next(),就是5。然后这个时候这个循环体也就执行完了。再调用next()的时候会拿到一个undefined值。

    迭代器执行next()的时候总是返回一个对象。然后在这个对象里面总会有两个属性。

  • 相关阅读:
    hdu 1873 看病要排队
    母函数详解
    【RDMA】无损网络和PFC(基于优先级的流量控制)
    图解Linux网络包接收过程
    结对编程 <==> 断背山?
    CMPP和SMPP协议比较
    Berkerly DB、SQL Server的性能比较
    使用Berkeley DB遇到问题了
    重新学习C语言
    超长短信的处理办法
  • 原文地址:https://www.cnblogs.com/ZHONGZHENHUA/p/8486638.html
Copyright © 2011-2022 走看看