3 3ES6 7 8新特性之Generator函式

2021-10-02 21:21:39 字數 995 閱讀 6352

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,表示獨一無二的值。...