最近在看js高级程序设计(第三版)里面解释函数参数类型传递有这样一句话 ECMAScript 中全部函数的参数都是按值传递的 而后有两个例子来讲明二者的区别:javascript
复制代码
function setName(obj) {
obj.name = "Nicholas";
}
var person = new Object();
setName(person);
alert(person.name); //"Nicholas"复制代码
看上去很像引用类型的传递,而后又一个例子解释:java
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赋值又如何能证实函数参数传递是值传递?bash
至关于以下:函数
var person = new Object();
var obj = person;
obj.name = "Nicholas";
var obj = new Object();
obj.name = "Greg";
console.log(person.name) //Nicholas复制代码
还望解惑ui