function f(agr){
//do
}
Plz,证明:不管是对象,还是基本类型,传递给agr的时候,都是值而非引用传递。
楼上回答了证明,我补充下原理。。。
证明:
var a = new Object();//堆内存中第一个对象,其实例为a
a.name= "1234";
var b = new Object();//堆内存中第二个对象,其实例为b
b.name = "5678";
function f(arg){
arguments[0] = a;//将参数arg所指向的对象传递为堆内存中第一个对象
console.log(arg.name);
}
f(b);//结果为1234
/*为堆内存中第一个对象的name属性
如果argument参数以引用传递,此时b所指向的对象应该为堆内存中第一个对象。*/
console.log(b.name);//结果为5678,
/*b所指向的对象却仍为堆内存中第二个对象
说明arguments[0] = a;这次传递为值的传递
*/
证毕
10 回答11.6k 阅读
2 回答3k 阅读✓ 已解决
3 回答2.6k 阅读✓ 已解决
2 回答2.1k 阅读✓ 已解决
4 回答2.1k 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
基本类型-字符串
对象obj