|
|
|
|
|
JavaScript中for
和forEach
都有循環(huán)遍歷數(shù)組的功能,但是forEach
又與for
有著不一樣的功能表現(xiàn),其中一個(gè)比較明顯的不同之處是forEach
有回調(diào)函數(shù)的功能。今天,我將介紹一下forEach
和for
不同的功能表現(xiàn)。
什么是 forEach?
ForEach 是一種對數(shù)組中的每個(gè)元素執(zhí)行一次函數(shù)的方法。讓我們用它來對一組數(shù)字求和。
for遍歷數(shù)組,通過索引值查找元素
在下一個(gè)示例中,我們要構(gòu)建一個(gè)名為“dog”的列表,我們使用for
循環(huán)將每個(gè)名稱添加到數(shù)組中,這需要通過索引“ i
”查找元素。
forEach遍歷數(shù)組,傳遞回調(diào)函數(shù)
forEach
讓我們可以編寫沒有索引變量“ i
”的相同代碼。我們將一個(gè)函數(shù)傳遞給forEach
,它在每個(gè)元素上運(yùn)行該函數(shù)。
在此示例中,for
和forEach
具有相同的結(jié)果,但功能不同,因?yàn)?code>forEach為數(shù)組的每個(gè)元素傳遞了一個(gè)回調(diào)函數(shù)。
forEach修改數(shù)組元素
此外,我們可以在forEach
期間修改數(shù)組的元素:
回調(diào)函數(shù)可以引用甚至修改外部作用域中定義的變量。
回調(diào)函數(shù)修改結(jié)果變量
在下一個(gè)示例中,回調(diào)函數(shù)修改結(jié)果變量。
forEach
回調(diào)的第二個(gè)參數(shù)是項(xiàng)目的索引。
上面的例子在我們調(diào)用forEach
的地方定義了內(nèi)聯(lián)回調(diào)函數(shù)。函數(shù)是 JavaScript 中的值,因此我們也可以通過其他方式傳遞它們。例如,我們可以將函數(shù)放在一個(gè)變量中,然后將該變量傳遞給forEach
。以下示例以不同的方式定義了我們的forEach
回調(diào)函數(shù),但它們都具有相同的效果。
為什么使用 forEach?
forEach
循環(huán)用于遍歷集合的元素,集合可以是數(shù)組或列表。它針對數(shù)組中存在的每個(gè)元素執(zhí)行。在循環(huán)體中,你可以使用你創(chuàng)建的循環(huán)變量,而不是使用索引數(shù)組元素。
總結(jié)
本文介紹了forEach
與for
不同的功能表現(xiàn),在編程過程中,可能由于編程習(xí)慣而用for
多一點(diǎn),但是當(dāng)你不斷開始使用forEach
時(shí),你會(huì)體會(huì)到使用它的樂趣。
相關(guān)文章