搜索
javascript - 求证明js的参数是按照值传递的?
伊谢尔伦
伊谢尔伦 2017-04-10 16:26:32
[JavaScript讨论组]
function f(agr){
    //do
}

Plz,证明:不管是对象,还是基本类型,传递给agr的时候,都是值而非引用传递。

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(4)
高洛峰

基本类型-字符串

var a="1234";
function f(paraInput){
    paraInput="5678";
    console.log(paraInput);
}
f(a);//5678
console.log(a);//1234

对象obj

var a={
value:'1234'
};

function f(paraObj){
    paraObj ={
     value:"5678"
    };
    console.log(paraObj.value);
}

f(a);//5678
console.log(a.value);//1234
PHPz

对象是引用传递的

巴扎黑

楼上回答了证明,我补充下原理。。。
证明:

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;这次传递为值的传递
*/

证毕

PHP中文网

值传递。它的值是指针

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板