如果数组成员是基本类型成员
var arr = [1,2,3,4,5,6];
arr.forEach(function(num){
if(index == 2) index = 666;
})
console.log(arr); //1,2,3,4,5,6
然后你会发现打印出的数组和原来一样
如果数组的成员是引用类型
var arr = [
{name: 'lzh', age: 20},
{name: 'xt', age: 30},
{name: 'haha', age: 40}
];
arr.forEach(function(obj){
if(obj.name == 'haha') obj.age =666;
})
console.log(arr);
//[ { name: 'lzh', age: 20 },
{ name: 'xt', age: 30 },
{ name: 'haha', age: 666 } ]
你会发现结果改变了,如果我直接改变对象而不是对象的属性,我们再来看一下会发生什么
var arr = [
{name: 'lzh', age: 20},
{name: 'xt', age: 30},
{name: 'haha', age: 40}
];
arr.forEach(function(obj){
if(obj.name == 'haha') obj = {name:'hello', age:50};
})
console.log(arr);
//[ { name: 'lzh', age: 20 },
{ name: 'xt', age: 30 },
{ name: 'haha', age: 40 } ]
你会发现你直接改变对象但是数组并没有改变,从这我们可以看出只要数组成员的地址是不能改变的,我们给基本类型和引用类型本身赋值,本质上来说都是地址改变了,我们改变属性你会发现,我们可以改变