Array.prototype.forEach为元素重新分配

时间:2017-01-09 16:16:58

标签: javascript arrays foreach

我使用了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,但我找不到任何相关内容。

1 个答案:

答案 0 :(得分:1)

JavaScript严格来说是pass/call/assign by value。这意味着如果你这样做

var foo = 42;
var bar = foo;
bar = 21;

然后只会更改bar的值,而不是foo。因此,虽然ele = 'E';更改了ele的值,但它不会影响数组。情况一直如此,forEach对于任何数组都是完全相同的。