ES6引入的新的資料型別

Will醬發表於2017-12-15

Map

generator

迭代器,利用yield關鍵字可實現多次返回

// max 指菲波那切數列的長度
function* fib(max) {
  var t,
      a  = 0,
      b  = 1,
      n  = 1;
  while (n < max) {
    yield a;
    t  = a + b;
    a = b;
    b = t;
    n++
  }
  return a;
}
// 執行輸出
var f = fib(5)  // 函式返回generator物件,操作後只能這樣去實現, fib(5).next()方法不起效?why?
f.next() // Object {value: 0, done: false}
f.next() // {value: 1, done: false}
f.next() // {value: 1, done: false}
f.next() // {value: 2, done: false}
f.next() // {value: 3, done: true}

// done: false , 為yield返回; done: true , return返回
複製程式碼

阮一峰Generator

相關文章