欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于函数参数传递的类型思考

程序员文章站 2022-03-25 08:51:49
...

最近在看js高级程序设计(第三版)里面解释函数参数类型传递有这样一句话 ECMAScript 中所有函数的参数都是按值传递的 然后有两个例子来说明两者的区别:

复制代码

function setName(obj) { 
    obj.name = "Nicholas"; 
} 
var person = new Object(); 
setName(person); 
alert(person.name); //"Nicholas"复制代码

 看上去很像引用类型的传递,然后又一个例子解释:

function setName(obj) { 
 obj.name = "Nicholas"; 
 obj = new Object(); 
 obj.name = "Greg"; 
} 
var person = new Object(); 
setName(person); 
alert(person.name); //"Nicholas" 复制代码

obj = new Object() 将指针指向了新的对象,原person应该还是指向原来的对象,此时perso.name = 'Nicholas' 当然成立,再对obj赋值又如何能证明函数参数传递是值传递?

相当于如下:

var person = new Object();
var obj = person;
obj.name = "Nicholas";
var obj = new Object();
obj.name = "Greg";
console.log(person.name) //Nicholas复制代码

还望解惑


转载于:https://juejin.im/post/5c665564e51d45403f2a98fa