我使用了forEach
,它的行为与我内存中的有所不同。通常我只是为元素分配一个新值,但这次不起作用。难道是它在嵌套数组中表现不正常吗?
现在是片段:
//works
this.array[0].forEach((ele,ind,arr)=>{
arr[ind] = 'E'; //works fine
});
//fails
this.array[0].forEach((ele,ind,arr)=>{
console.log(ele); //element is empty
ele = 'E';
console.log(ele); //element is 'E'
});
我假设元素本身是按值复制的,而不是按引用复制的。
我读了Mozilla Docs但我找不到任何相关信息。
最佳答案
JavaScript 严格来说 pass/call/assign by value 。这意味着如果你这样做
var foo = 42;
var bar = foo;
bar = 21;
那么这只会改变 bar
的值,而不会改变 foo
的值。因此,虽然 ele = 'E';
更改了 ele
的值,但它不会影响数组。情况一直如此,forEach
对于任何数组都完全相同。
关于javascript - Array.prototype.forEach 元素的重新赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41552276/