Skip to Main Content
現代JavaScript實務應用
book

現代JavaScript實務應用

by Nicolas Bevacqua
May 2018
Intermediate to advanced content levelIntermediate to advanced
336 pages
5h 16m
Chinese
GoTop Information, Inc.
Content preview from 現代JavaScript實務應用
4.3 產生器函式和產生器物件
|
121
function shuffleSongs(songs) {
return songs.slice().sort(() => Math.random() > 0.5 ? 1 : -1)
}
console.log([...playlist(shuffleSongs(['a', 'b']), 3)])
// <- ['a', 'b', 'b', 'a', 'a', 'b']
迭代器在 ES6 中是很重要的一項工具,它不僅可幫助我們降低程式碼間
的關聯性,還可解決之前一些難以實作的問題,例如:模糊處理一系列
歌曲的能力—不管序列為有限或無限量。這樣以某種程度相同的處理方
式,可讓有運用迭代器協議的程式碼看起來更為優雅。但它將未知的可
迭代物件轉換為陣列也會產生可能的風險,因為無窮迴圈會使你的應用
程式崩潰。
產生器是另一種建立可回傳迭代物件的函式的方式,且不需要明確地宣
告一個附有
Symbol.iterator
方法的物件實字。它可讓函式的實作更為
簡單,例如:第 112 頁第 4.2.2 節「無限量的序列」的
range
take
式,還有一些有趣的案例可參考使用。
4.3 產生器函式和產生器物件
產生器是 ES6 新的特徵功能。它運作的方式是,你可以宣告一個產生器
函式,函式會回傳產生器物件
g
。這些
g
物件可使用
Array.from(g)
[...g]
、或
for..of
迴圈進行迭代。產生器函式可允許宣告一個特殊的
iterator
迭代器,這種迭代器可暫停執行並保留其內容。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

精實企業|高績效組織如何達成創新規模化

精實企業|高績效組織如何達成創新規模化

Jez Humble, Joanne Molesky, Barry O'Reilly
C++语言导学(原书第2版)

C++语言导学(原书第2版)

本贾尼 斯特劳斯特鲁普
優雅的SciPy|Python科學研究的美學

優雅的SciPy|Python科學研究的美學

Juan Nunez-Iglesias, Stéfan van der Walt, Harriet Dashnow

Publisher Resources

ISBN: 9789864767885