var obj = {
num: 1
};
function foo(o) {
o.b = 100;
o.num = 2;
o = {
num: 3
}
console.log(o)
}
foo(obj);
console.log(obj);
image.png
传递的是数据类型的拷贝副本(引用地址),虽然引用的是同一个对象,但是无法通过改变形参来改变实参本身。
这里的
o = { num: 3}
是给o又重新定义了一个对象,指向了一个新的内存地址, 等于是脱离了对原来的 obj 实参的引用。
var obj = {
num: 1
};
function foo(o) {
o.b = 100;
o.num = 2;
obj = {
num: 3
}
}
foo(obj);
console.log(obj);
image.png
这里的obj 给了一个新的引用
之前介绍:https://www.jianshu.com/p/f0e747825a68
面试题:
var obj = {
num: 1
};
function foo(o) {
o.b = 100;
o.num = 2;
o = {
num: 3
}
console.log(o)
}
foo(obj);
console.log(obj);
网友评论