將myArray視爲一組對象。JavaScript中的foreach循環語法
這兩段代碼是否等價?
myArray.forEach((item) => {
return doAnAction(item);
});
myArray.forEach((item) => {
doAnAction(item);
});
在語法方面有沒有更好的方法?如果是,爲什麼?
將myArray視爲一組對象。JavaScript中的foreach循環語法
這兩段代碼是否等價?
myArray.forEach((item) => {
return doAnAction(item);
});
myArray.forEach((item) => {
doAnAction(item);
});
在語法方面有沒有更好的方法?如果是,爲什麼?
據我所知有,因爲你提供了一個匿名函數,而第一個廣告返回doAnAction(item)
的結果(這是無論如何忽略不計),第二個確實是在陣列應用到每個元素這兩者之間沒有什麼區別不。
所以他們真的是等價的,第二個對我來說意義更大。
更好的問題是,你爲什麼不直接使用功能的回調,像
myArray.forEach(doAnAction);
回調必須遵循的Array#forEach
的API,這是
功能爲每個執行元素,取三個參數:
- currentValue:Th當前元素正在數組中進行處理。
- 索引:正在數組中處理的當前元素的索引。
- array:正在應用
forEach()
的數組。
如果您只需要元素,那麼你可以直接使用給定的回調沒有任何映射。
我明白了! :)這實際上更清晰!謝謝 – Rose
這不是特定於forEach
循環。這只是ES6語法。
隨着ES5,這裏是正確的語法:
myArray.forEach(function (item) {
doAnAction(item);
});
隨着ES6,你有更多的可能性:
// Solution #1
myArray.forEach((item) => {
doAnAction(item);
});
// Solution #2
myArray.forEach(item => {
doAnAction(item);
});
// Solution #3
myArray.forEach(item => doAnAction(item));
他們沒有提到語法問題。他們詢問「返回」是否會改變這種情況,如果是的話,如何改變這種情況。 –
其實我是在問其語法:)其在帖子的標題中,澄清了我的帖子以及其他觀衆!謝謝 – Rose
@Rose是的,這就是爲什麼我嚴格回答語法的原因......;)我不知道你的'doAnAction'函數是怎麼樣的,但是請注意,在'forEach中使用'return'通常很尷尬'循環。與'map','reduce','filter','some','every'等其他核心數組方法一起使用'return'會更加頻繁。 – Badacadabra
是的,他們是等價的。 '.forEach()'不使用它的回調函數的返回值。有關更多信息,您可以隨時查看[MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach)。這是一個很好的資源。 –
它們在語法上是相同的,但其中一個具有無意義的「返回」。如果你詢問代碼風格,那麼1)基於意見的問題是關於SO 2的話題。)就我個人而言,我更喜歡後者,因爲增加'return'意味着你使用的是返回值,而沒有返回值。 –