zoukankan      html  css  js  c++  java
  • 对gererator函数的认识

    在js中函数一旦运行,会运行到最后,或者遇到retuen 的时候。而generator函数打破了函数完成运行的可能。它的语法跟普通函数完全不同。

    1:function关键字和函数型之间有个*号,推荐放在关键字后面。 

    2:直接调用 Generator函数并不会执行,也不会返回运行结果,而是返回一个遍历器对象(Iterator Object)

    3: 依次调用遍历器对象的next方法,遍历 Generator函数内部的每一个状态

    4:体现了惰性,走一步停一步,yield是暂停 ,next()继续。

    5:yield跟return的区别:相似之处都是返回了表达式的值,区别,每次遇到yield就会暂停执行,调用next之后再从该位置继续向后执行,而return语句执行完,函数也就执行完毕。一个函数只能执行一次return ,而生成器函数可以左右多个yield。因此再生成器函数中可以不必要return。

    6:任何具有有效的[Symnol.iterator]接口的对象都是可迭代的,可以使用for of 遍历。for of 实际上调用的就是next方法。一旦next()方法发挥的对象的属性的done是true,for  of循环就是终止。且不包含该返回对象。

    function* gen() {
        yield 1
        yield 2
        yield 3
        yield 4
        return 5
      }
      
      for(let item of gen()) {
        console.log(item)
      }
      
      // 1 2 3 4

    7:生成器函数如果有return params,则最后的执行结果是{value:params,done:true},否则是 {value:undefined,done:true}

  • 相关阅读:
    innerHTML使用方法
    HDU 1426 Sudoku Killer
    Junit使用教程(一)
    HLS协议实现
    GPIO
    TraceView总结
    在kettle中实现数据验证和检查
    用户向导左右滑动页面实现之ImageSwitcher
    DWZ使用笔记
    oracle进程
  • 原文地址:https://www.cnblogs.com/binglove/p/14320134.html
Copyright © 2011-2022 走看看