js函数传参,按值传递,按引用传递

按值传递

函数的形参是所传实参的拷贝值,形参的值发生改变不会影响实参。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
复制代码