javascript - Array.prototype.forEach 元素的重新赋值

标签 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但我找不到任何相关信息。

最佳答案

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/

相关文章:

loops - react native foreach 循环

javascript - jQuery 在桌面分辨率下禁用 SlideToggle

c - 没有 malloc 但有另一种方法的链表

php - 通过 Ajax 将 Javascript 对象发送到 PHP

javascript - 什么是关联数组?

php - 有没有办法用数组数据为sql代码创建foreach

c# - foreach循环仅显示gridview的最后一个值

java - 丰富的 :effect usage problem

javascript - Chart.js:无法获取 x 轴值的坐标,除非 x 轴具有完全相同的值

javascript - 始终在平面列表中显示滚动条