这是引用传递还是值传递?

今天看到一个问题,引申出来另一个疑问。
第一种情况:

var x = [1, 2];
function change (data) {
    data = 3;
}
change(x);
console.log(x); //[1, 2]

第二种:

var x = [1, 2];
function change (data) {
    data[0] = 3;
    data[1] = 4;
}
change(x);
console.log(x); //[3, 4]

对比两种情况,js是怎么区分函数的参数是值传递还是引用传递?此中情况涉及到重载机制么?

阅读 563
评论 3月26日提问
    5 个回答

    JavaScript 只有按值传递,没有按引用传递。

    要区别也是说值传递传递的值类型还是引用类型。


    var obj = { id: 0 };
    var func = (o) => {
        o = { id: 1 }; 
    }
    
    func(obj);
    console.log(obj.id); // 给形参重新赋值后打印出来 1 了才是引用传递
    评论 赞赏 3月26日