javascript迭代器是什麼

青灯夜游
發布: 2021-12-07 17:30:55
原創
1607 人瀏覽過

在javascript中,迭代器是一種特殊對象,它具有一些專門為迭代過程設計的專有接口,所有的迭代器對像都有一個next()方法,每次調用都返回一個結果對象。迭代器會保存一個內部指針,用來指向目前集合中值的位置。

javascript迭代器是什麼

本教學操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。

一、迭代器的定義:

迭代器是一種特殊物件,它有一些專門為迭代過程設計的專有接口,所有的迭代器物件都有一個next()方法,每次呼叫都會回傳一個結果物件。結果物件有兩個屬性:一個是value,表示下一個將要傳回的值;另一個是done,它是一個布林類型的值,當沒有更多可傳回資料時傳回true。迭代器也會保存一個內部指針,用來指向目前集合中值的位置,每調用一次next()方法,都會返回下一個可用的值

如果在最後一個值返回後再調用next ()方法,那麼傳回的物件中屬性done的值為true,屬性value則包含迭代器最終傳回的值,這個回傳值不是資料集的一部分,它與函數的傳回值類似,是函數呼叫過程中最後一次傳遞訊息給呼叫者的方法,如果沒有相關資料則回傳undefined

二、為何會出現迭代器?

背景前提:

我相信你一定用過for循環,也有過空指針引用的問題:例如陣列長度只有5,但是你的索引卻跑到了6。邏輯稍微失誤,就導致程式無法正常運作。

迭代器想要解決的問題是:

#解決、或減少使用類似for迴圈過程中,存取變數集合的中出錯的問題。例如:空指標引用

舉個栗子:

我們使用for迴圈遍歷集合時,容易出錯,但是我們使用類似forEach的話,就會減少空指標引用的問題。

array.forEach(element => {
	// 此时可以不用i来操作集合了。            
});
登入後複製

三、用js實作一個簡單的迭代器

function myIterator(list) {
    let i = 0;
    return {
        next: function() {
            let done = (i >= list.length);
            let value = !done ? list[i++] : undefined;
            return {
                done: done,
                value: value
            };
        }
    };
}
登入後複製

由函數定義可以看出:

  • ##函數傳回值是個物件 ,物件中,key為next、value為函數;

  • 每呼叫一次next(), i 1,同時回傳一個物件 ,物件就是集合的元素;

【相關推薦:

javascript學習教學

以上是javascript迭代器是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!