我使用了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,但我找不到任何相关内容。
答案 0 :(得分:1)
JavaScript严格来说是pass/call/assign by value。这意味着如果你这样做
var foo = 42;
var bar = foo;
bar = 21;
然后只会更改bar
的值,而不是foo
。因此,虽然ele = 'E';
更改了ele
的值,但它不会影响数组。情况一直如此,forEach
对于任何数组都是完全相同的。