第一个引用传递,所以会互相影响。第二个类型不也是引用类型吗,但为什么是值传递呢?
var obj1 = {name: 'kenny'};
var obj2 = obj1;
obj1.name = 'kongyun';
obj2.name // 'kongyun'
var a = {a:1, b:2};
var b=a;
a={a:3,b:4};
console.log(a);//{a:3,b:4};
console.log(b);{a:1, b:2}
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
第一个,数据类型存储访问,希望有助。
第二个,
这行代码的意思就是a另起灶炉了,跟以前那个
var a = {a:1, b:2};毫无瓜葛了var b=a;a和b都指向 {a:1, b:2};内存地址。
a={a:3,b:4}; a指向了{a:3,b:4};内存地址,而b还是指向{a:1, b:2};
所以两个结果不同!
javascript里的所有传递都是值传递, 对于Object的类型你可以理解成指针, 这个变量只存储了Object的内存地址.
当一个变量向另一个变量复制引用类型的值时,会将存储在栈中的值(栈中存放的值是对应堆中的引用地址)复制一份到为新变量分配的空间中。
不同的是,这个值的副本其实是一个指针,而这个指针指向存储在堆中的一个对象。复制操作结束后,两个变量实际上引用同一个对象。