2017-06-20 42 views
0

我從來沒有深入瞭解return,直到我玩了一些代碼並且遇到了這個不錯的結果。
var x = [{a:2}, {a:4}, {b:4}]
當我改變對象內的某些值時,我發現3種不同種類的return具有相同的響應。我知道它爲什麼這樣做,但不是在很低的機器級別上。任何人都可以解釋爲什麼這3 return返回相同的東西,當我應該小心這一點?在陣列中改變對象時類似的`return`值

x.forEach((elem) => { 
 
    if (elem.a === 2) { 
 
    elem.a = 4 
 
    } 
 
}) 
 

 
x.forEach((elem) => { 
 
    if (elem.a === 2) { 
 
    elem.a = 4 
 
    return elem 
 
    } 
 
}) 
 

 
x.forEach((elem) => { 
 
    if (elem.a === 2) { 
 
    elem.a = 4 
 
    } 
 
    return elem 
 
}) 
 

 
    => x is always [{a: 4}, {a: 4}, {b: 4}]

我有一種感覺這是由於forEach,但不能確定。感謝閱讀:D

+2

是的,原因是'forEach'忽略你返回的值。不,不同的片段不會返回相同的內容。 – Bergi

+0

我可能在這裏是錯的,但是,這聽起來像forEach正在變異的元素,這不必與返回。 – Hodrobond

+0

@Bergi是的,所有三個片段都返回與我所提到的數組x相同的值。 – Jamie

回答

0

很簡單。第一個在操作結束時不返回。它只是改變值並返回void。第二個返回整個更改的數組,第三個返回僅最後一個更改的值。