JavaScript 按值传递

2019-06-13  本文已影响0人  小泡_08f5
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);

上一篇 下一篇

猜你喜欢

热点阅读