1.概念
generator 函式是 es6 提供的一種非同步程式設計解決方案
generator 函式內部可以封裝多個狀態, 因此又可以理解為是乙個狀態機。
2.定義 generator 函式
在普通函式的function後面加上* 即可
eg: function* gen()
3.generator函式和普通函式區別
3.1呼叫generator函式後, 無論函式有沒有返回值, 都會返回乙個迭代器物件,
3.2呼叫generator函式後, 函式中封裝的**不會立即被執行
4.yield關鍵字
4.1在generator函式內部使用yield關鍵字定義狀態
4.2並且yield關鍵字可以讓 generator內部的邏輯能夠切割成多個部分。
4.3通過呼叫迭代器物件的next方法執行乙個部分**,
執行哪個部分就會返回哪個部分定義的狀態
4.4.在呼叫next方法的時候可以傳遞乙個引數, 這個引數會傳遞給上乙個yield
**舉例:
function* gen()
let it = gen();
console.log(it.next());
console.log(it.next("qqq"));
列印結果如下圖
5.應用場景
讓函式返回多個值
利用 generator 函式,可以在任意物件上快速部署 iterator 介面
列印結果:gen {}
定義乙個generator 函式,然後賦值給介面,剩下的業務邏輯、返回值等在generator 函式中實現,這樣方便了很多。
注意點: yield關鍵字只能在generator函式中使用, 不能在普通函式中使用。
3 1ES6 7 8新特性之Symbol
1.symbol的概念 1.symbol是es6中新增的一種資料型別,被劃分到了基本資料型別中.基本資料型別 字串 數值 布林 undefined null symbol 引用資料型別 object 2.symbol的作用 用來表示乙個獨一無二的值 3.如果生成乙個獨一無二的值?let symbol...
ES6 7 8常用新特性總結 超實用
let 命令也用於變數宣告,但是作用域為區域性 在函式外部可以獲取到b,獲取不到a,因此例如for迴圈計數器就適合使用let。const用於宣告乙個常量,設定後值不會再改變 const pi 3.1415 pi 3.1415 pi 3 typeerror assignment to constant...
ES6 新特性之Symbol
symbol let s1 symbol foo let s2 symbol bar s1 symbol foo s2 symbol bar s1.tostring symbol foo s2.tostring symbol bar es6 引入了一種新的原始資料型別symbol,表示獨一無二的值。...