JS--调用函数时传递变量参数时,是值传递还是引用传递

123 阅读1分钟
理解一: 都是值(基本值/地址值)传递

理解二: 可能是值传递,也可能是引用传递(地址值)

var a = 3
function func(a){ //调用函数时,a = a ,只是进行了值的传递
    a += 1
}
func(a)
console.log(a)  //3 其实在调用函数时,做了一个a = a 的赋值操作,第一个a是形参,第二个a是实参,所以方法中对形参a做了改变,并不会影响外面的a

function func2(obj2){   //调用函数时, obj2 = obj, 进行了地址值的传递
    obj2 = {name: 'bbb'} //obj2 重新开辟了一块新的空间,与obj无关了,任何操作都不会影响obj
}
var obj = {name: 'aaa'}
function func2(obj)
console.log(obj.name)  //'aaa'

---------------------------------------------------------------------------------------

function func2(obj2){   //调用函数时, obj2 = obj
    obj2.name = 'bbb' //obj2 与 obj 指向同一个对象,所以修改obj2的同时也在修改obj
}
var obj = {name: 'aaa'}
function func2(obj)
console.log(obj.name)  //'bbb'