javascript – forEach()是否通过引用绑定?

前端之家收集整理的这篇文章主要介绍了javascript – forEach()是否通过引用绑定?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
var arr = ['Foo'];

arr.forEach(function(item){
  console.log(item);
  item = 'Lorem';
  console.dir(arr[0]);

});

for (var item in arr){
  arr[item] = 'Ipsum';
  console.dir(arr[0]);
}

与上面的代码一样,我注意到更改传递给forEach()回调的项的值不会导致迭代对象发生更改.

用于……当然可以.

为什么那&我该如何改变数组中的值?

我发现这个主题MDN上引起了很大的困惑

解决方法

Using for…in certainly does.

不,不.你的forEach循环等同于… in循环(除了顺序):

for (var index in arr) {
  var item = arr[index];
  console.log(item);
  item = 'Lorem';
  console.dir(arr[0]);
}

你看到数组也没有修改过吗?那是因为JavaScript始终是pass-by-value,并且有一个非常简单的规则要记住:

Assigning a value to a variable never changes the value of another variable or data structure.

这意味着,为item分配一个新值,不能更改arr的元素.如果你想修改数组,你必须通过为索引赋值来直接改变它,即

arr[index] = 'foo';

猜你在找的JavaScript相关文章