2017-06-20 13 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。第二个返回整个更改的数组,第三个返回仅最后一个更改的值。