其實就是乙個迭代邏輯,完全可定製,規定了迭代什麼,返回什麼,如何迭代等等資訊
表示可被迭代的物件,具體來說就是實現了 [symbol.iterator] 方法的物件
// 一般可以在乙個陣列的原型中找到 [symbol.iterator] 方法
// 陣列本身是實現了迭代器的(擁有 [symbol.iterator] 方法)
let arr =[1
,2,3
,4];
for(
let val of arr)
讓普通物件也成為迭代物件
let obj =
;// 給物件新增新的屬性(給物件加上迭代器)
obj[symbol.iterator]
=function()
;}else,}
;}},
};};
// 可迭代物件可以使用 for...of
// 呼叫 for...of 會去呼叫 symbol.iterator 方法
for(
let val of obj)
基於迭代器實現的乙個可迭代函式, 其實也是 async + await 的前身(其實只要在 yield 後面跟乙個 promise 就大體實現了 async + await)。
// generator 函式
function*fn
()// 並不會立即執行
let res =fn(
);//需要明確呼叫 next 方法才會執行
console.
log(res.
next()
);// console.
log(res.
next()
);// console.
log(res.
next()
);// console.
log(res.
next()
);//
Generator函式和可迭代物件相關概念
1.呼叫乙個生成器函式,並不會馬上執行它裡面的語句,而是返回這個生成器的迭代器 iterator 物件。2.呼叫迭代器的next 方法,會執行到第乙個出現yield的位置,返回yield後面的值,然後暫停。如果遇到yield 則執行權移交給另外乙個生成器函式 當前的暫停 3.next 方法的返回值為...
迭代函式 Generator函式的理解
一 基本用法 generator函式跟普通函式在寫法上的區別就是,多了乙個星號 並且只有在generator函式中才能使用yield 什麼是yield呢,他相當於generator函式執行的中途暫停點,比如下方有3個暫停點。而怎麼才能暫停後繼續走呢?那就得使用到next方法,next方法執行後會返回...
python迭代物件和迭代器
一.迭代物件 1.概念 迭代物件 可以直接作用於for迴圈的物件統稱為可迭代物件 iterable。2.可以直接作用於for迴圈的資料型別 1 集合類資料型別,如list,tuple,dict,set,str等 2 generator,包括生成器和帶yield的generator function....