forEach等函数

2018-04-07  本文已影响0人  c菜鸟

如果数组成员是基本类型成员

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 } ]

你会发现你直接改变对象但是数组并没有改变,从这我们可以看出只要数组成员的地址是不能改变的,我们给基本类型和引用类型本身赋值,本质上来说都是地址改变了,我们改变属性你会发现,我们可以改变

上一篇 下一篇

猜你喜欢

热点阅读