函數的形參是所傳實參的拷貝值,形參的值發生改變不會影響實參。bash
let a=1;
function foo(a){
a=2;
console.log(a); // 2
}
foo(a);
console.log(a); // 1
複製代碼
函數的形參是所傳實參的隱式引用,形參的值發生改變會影響實參。函數
var obj1={name:"lisa"};
var obj2={name:"jennie"};
function foo(obj){
obj.name="huahua";
obj=obj2;
console.log(obj.name); // jennie
}
foo(obj1);
console.log(obj1.name); // huahua
複製代碼
棧——> 堆ui
obj1——> name:"lisa"spa
obj2——> name:"jennie"code
函數執行後string
obj/obj1——> name:"huahua"io
obj——> name:"jennie"console
js傳參是按值傳遞function
function setValue(obj) {
obj.name = "111";
var obj = new Object();
obj.name = "222";
return obj;
}
let newObj = new Object();
newObj.name = "333";
let result = new setValue(newObj);
console.log(newObj.name); // 111
console.log(result); // {name:"222"}
console.log(result.name); // 222
複製代碼