迭代物件 和 Generator

2021-10-06 20:18:30 字數 1142 閱讀 1763

其實就是乙個迭代邏輯,完全可定製,規定了迭代什麼,返回什麼,如何迭代等等資訊

表示可被迭代的物件,具體來說就是實現了 [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....