generator 生成器可以返回多次值的函式

2021-08-28 10:40:38 字數 1298 閱讀 4466

一般的函式只有一次返回值 ,但是我們的generator可以給我們返回多次

做乙個簡單的相親網demo會更明白一些:

1.generator的結構為

function* numbers()

//然後乙個生成器

const gen = numbers();

//gen並不是像es5中為乙個方法,這裡列印並不需要()

console.log(gen)

function* nmubers()

const gen = nmubers();//gen並不是像es5中為乙個方法,這裡列印並不需要()

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

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

//以上為什麼同樣的東西列印出來卻有兩種結果?如果你把方法裡的yield關鍵字注釋後再列印你會發現兩次結果都為true

(0,1,1) -->0+1=1.1+1=2 這樣的演算法

//斐波那契數列

function fib(max)

return arr;

}//斐波那契最開始都是(0,1,1,2,3)-->0+1=1,1+1=2 這樣的乙個過程

console.log(fib(5))//[ 0, 1, 1, 2, 3 ]

console.log(fib(10))//[ 0, 1, 1, 2, 3, 5, 8, 13, 21, 34 ]

function* fib(max) :}}

}const namearray = ['henry','bucky','emily'];

const names = nameiterator(namearray);

console.log(names.next())//

console.log(names.next())//

console.log(names.next())//

console.log(names.next())//

console.log(names.next())//

demotwo

//demo two

function* saynames()

const name = saynames();

console.log(name.next())

console.log(name.next())

console.log(name.next())

/** *

*/

Generator生成器基礎

生成器函式是es6提供的一種非同步程式設計解決方案,語法行為與傳統函式完全不同 function gen let iterator gen console.log iterator 不會輸出hello 是乙個迭代器物件 需要呼叫next方法才會輸出 iterator.next 輸出結果 yield相...

Python程式設計 generator生成器

列表生成式 lst for i in range 10 print lst 0,2,4,6,8,10,12,14,16,18 相當於 lst i 2 for i in range 10 print lst 0,2,4,6,8,10,12,14,16,18 lst i 2 for i in range...

PHP 生成器Generator理解

寄凡 風雪之隅 php手冊 生成器 generator 引用自官網 生成器提供了一種更容易的方法來實現簡單的物件迭代,相比較定義類實現iterator介面的方式,效能開銷和複雜性大大降低。生成器允許你在foreach 塊中寫 來迭代一組資料而不需要在記憶體中建立乙個陣列,那會使你的記憶體達到上限 劃...