記筆記,主要是為了提高學習效率,避免只看不動手,領略不到書的精髓,忽略到書中的重點知識,本文學習主要是根據阮一峰大神走的,很感謝阮一峰大神的無私奉獻。如果想要了解更詳細的關於本節的內容可以看阮一峰大神的es6官網
yield*表示式
如果在generator函式內部呼叫另乙個generator函式,預設情況是沒有效果的。這個就需要用到yield*表示式,用來在乙個generator函式裡面執行另乙個generator函式。
var g = function *()
var p = g();
var g2 = function * ()
var p2 = g2();
console.log(p2.next());//
console.log(p2.next());//
console.log(p2.next());//
console.log(p2.next());//
console.log(p2.next());//
注意:如果yield表示式後面跟的的是乙個遍歷器物件,需要在yield表示式後面加上星號,表明它返回的是乙個遍歷器物件,這被稱為yield*表示式。
yield*表示式後面的generator函式(沒有return語句時),等同於在generator函式內部,部署乙個for...of迴圈。
如果yield*表示式後面的generator函式有return語句時,需要用var value = yield* iterator 的形式獲取return語句的值
var g = function *()
var p = g();
var g2 = function * ()
var p2 = g2();
console.log(p2.next());
console.log(p2.next());
console.log(p2.next());
console.log(p2.next());
console.log(p2.next());
////
//// over
////
如果yield*後面跟著乙個陣列,由於陣列原生支援遍歷器,因此就會遍歷陣列成員,如果yield表示式後面跟乙個陣列,返回的是整個陣列
var g2 = function * ()
var p2 = g2();
console.log(p2.next());//
console.log(p2.next());//
console.log(p2.next());//
console.log(p2.next());//
console.log(p2.next());//
實際上,任何資料結構只要有iterator介面,就可以被yield*遍歷。(陣列、類陣列、字串、map資料結構、set資料結構)
如果乙個物件的屬性是generator函式,可以在這個屬性的前面加星號,表示這個屬性是乙個generator函式
generator函式不能跟new命令一起用,會報錯。
ES6學習 Generator函式
generator是es6提供的一種非同步程式設計的解決方案。形式上有兩個特徵。一是,function關鍵字和函式名之間有個星號 二是,函式內部使用yield語句,定義不同的內部狀態。function hellogenerator var hw hellogenerator 必須呼叫物件的next方...
ES6之生成器(Generator)
目錄 深入理解 新語法 yield 生成器與協程 通過一段程式,持續迭代或列舉出符合某個公式或演算法的有序數列中的元素。function fibo let generator fibo for let i 0 i 10 i 生成器函式和普通函式的語法差別在於,在 function 語句之後和函式名之...
ES6新特性之Generator函式
generator 函式是 es6 提供的 一種非同步程式設計解決方案,語法行為與傳統函式完全不同 generator函式有兩個特徵 一是 function命令與函式名 之間有乙個星號 二是 函式體內部使用 yield吾句定義不同的內部狀態。用法 可以看到,通過hello 返回的h物件,每呼叫一次n...