ES6的function 的用法

2021-10-11 09:31:44 字數 2241 閱讀 5016

function* 這種宣告方式(function關鍵字後跟乙個星號)會定義乙個生成器函式 (generator function),它返回乙個 generator 物件。

function* name([param[, param[, … param]]])

name

函式名param

要傳遞給函式的乙個引數的名稱,乙個函式最多可以有255個引數。

statements

普通js語句。

生成器函式在執行時能暫停,後面又能從暫停處繼續執行。

呼叫乙個生成器函式並不會馬上執行它裡面的語句,而是返回乙個這個生成器的 迭代器 ( iterator )物件。當這個迭代器的 next() 方法被首次(後續)呼叫時,其內的語句會執行到第乙個(後續)出現yield的位置為止,yield 後緊跟迭代器要返回的值。或者如果用的是 yield*(多了個星號),則表示將執行權移交給另乙個生成器函式(當前生成器暫停執行)。

next()方法返回乙個物件,這個物件包含兩個屬性:value 和 done,value 屬性表示本次 yield 表示式的返回值,done 屬性為布林型別,表示生成器後續是否還有 yield 語句,即生成器函式是否已經執行完畢並返回。

function* gen() 

//gen_obj為genetator物件

var gen_obj = gen();

console.log(gen_obj.next());// 執行 yield 10,返回 10

console.log(gen_obj.next());// 執行 yield 'foo',返回 'foo'

console.log(gen_obj.next(100));// 將 100 賦給上一條 yield 'foo' 的左值,即執行 x=100,返回 100

console.log(gen_obj.next());// 執行完畢,value 為 undefined,done 為 true

function* idmaker()

var gen = idmaker();

console.log(gen.next()); // 0

console.log(gen.next()); // 1

console.log(gen.next()); // 2

console.log(gen.next()); // undefined,沒有yeild了就會done就是true

//生成器也可以接收引數:

function* idmaker()

var gen = idmaker(5);

console.log(gen.next()); // 5

console.log(gen.next()); // 6

//yield*的示例

function* anothergenerator(i)

function* generator(i)

var gen = generator(10);

console.log(gen.next().value); // 10

console.log(gen.next().value); // 11

console.log(gen.next().value); // 12

console.log(gen.next().value); // 13

console.log(gen.next().value); // 20

//顯式返回,return後,之後的語句不會執行

//生成器函式不能當構造器使用

function* f()

//var obj = new f; // throws "typeerror: f is not a constructor"

//使用迭代器遍歷二維陣列並轉換成一維陣列:

function* iterarr(arr)

} else

}// 使用 for-of 遍歷:

var arr = ['a', ['b', 'c'], ['d', 'e']];

for (var x of iterarr(arr))

// 或者直接將迭代器展開:

var arr = ['a', ['b', ['c', ['d', 'e']]]];

var gen = iterarr(arr);

//展開運算子會預設呼叫迭代器

arr = [...gen]; // ["a", "b", "c", "d", "e"]

console.log(arr)

function用es6怎麼寫

1 普通函式的定義,用箭頭函式表示,demofunction是函式名,括號表示引數,大括號表示函式體的內容。12 3let demofunc param 2 map函式在es6中的寫法,同樣也是箭頭函式,e表示map出來的元素,key表示當前id12 3array.map e,key 3 類內函式的...

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 基本用法

一 let 命令 基本用法 1 塊及作用域 var d 1 if true console.log d 4 d被覆蓋 let c 2 if true console.log c 2上面的 中 分別用 var 和 let 宣告了兩個變數 var 宣告的即使在作用域的也可以覆蓋之前宣告 let 宣告的變...