最近在看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