ECMAScript中所有参数传递都是值,不可能通过引用传递参数
var obj = '111';
function ddd(obj){
obj = '222';
}
ddd(obj);
console.log(obj);
输出: 111
const obj2 ={a:'111'};
//let obj2 ={a:'111'};
//var obj2 ={a:'111'};
function ddd(obj){
obj.a = '222';
}
ddd(obj2);
console.log(obj2);
输出: {a: "222"}
来2张图片就很形象了
引用对象也是传值,只是它传的是地址。
var student= new Object()
function addName(obj){
obj.name = 'roddan'
obj = new Object()
obj.name = 'liujiang'
}
addName(student)
console.log(student)
最终输出的仍为"roddan" ,进一步说明是值传递。
而obj = new Object() 相当于局部变量,函数调用完成后被销毁,换种说法 它只是自己空间保存的地址将会被新的对象的存储地址所覆盖,因为是传值不是引用,所以它不会影响到student空间所保存的地址。
红宝书真的是好东西呀,只是看着太无聊了。(今天抽时间看看this)
参考:https://blog.youkuaiyun.com/weixin_39728230/article/details/80607294#commentBox