理解 ES6 語法中 yield 關鍵字的返回值

2021-07-27 09:03:18 字數 964 閱讀 4524

在 es6 中新增了生成器函式的語法,本文解釋了生成器函式內 yield 關鍵字的返回值。

根據語法規範,yield 關鍵字用來暫停和繼續執行乙個生成器函式。當外部呼叫生成器的 next() 方法時,yield 關鍵字右側的表示式才會執行。

執行結果會轉化為乙個物件(包含兩個屬性, value 和 done),作為 next() 方法的返回值。

對於  var foo = yield expression 語句,yield 左側變數 foo 的值將在下一次呼叫 next() 方法時獲得,並且等於呼叫時 next() 方法的引數。

首先構造乙個生成器函式。

function*numbers() 

var nums = numbers();

下面呼叫生成器函式。

//

第 1 次呼叫 next, v1 的值還沒有返回.

console.log(nums.next(2));

程式輸出如下。

function start.

接著,執行第二次呼叫。

//

第 2 次呼叫 next, next 引數作為上一次 yield 值返回給 v1.

console.log(nums.next(3));

此時程式輸出如下。

v1 = 3

最後,執行第三次呼叫。

//

第 3 次呼叫 next, 此時 done 的值為 true, 直接返回 return 的值.

console.log(nums.next(4));

程式結束執行,輸出如下。

v2 = 4

yield 關鍵字

生成器函式語法 (function*)

非同步操作和async函式

理解ES6中class語法

function point result point.prototype.add function var num new point add 建立例項並呼叫add方法 console.log num 列印這個方法的返回值1.宣告類 class point add let num new poin...

es6中reduce的用法 Es6基礎語法

1 this this代表當前正在執行的物件 function fn fn window const obj new fn fn.call 2 箭頭函式 1 箭頭函式的this是在定義的時候就固定不變了 2 箭頭函式 沒有自己的this 3 箭頭函式 不能當類 構造器 使用 不可以 new 4 箭頭...

es6 基本語法

es6規定暫時性死區和let const語句不出現變數提公升,主要是為了減少執行時錯誤,防止在變數宣告前就使用這個變數,從而導致意料之外的行為。這樣的錯誤在 es5 是很常見的,現在有了這種規定,避免此類錯誤就很容易了。總之,暫時性死區的本質就是,只要一進入當前作用域,所要使用的變數就已經存在了,但...