乐趣区

关于javascript:JavaScript的参数是按照什么⽅式传递的

根本数据类型传递形式

因为 js 中存在 简单类型 根本类型 ,对于 根本类型 而言,是按值传递的

    var a = 1; 
    function test(x) {
        x = 10; 
        console.log(x); 
    }
    test(a); // 10 
    console.log(a); // 1

尽管在函数 testa 被批改, 并没有有影响到 内部 a 的值, 根本类型是按值传递的.

简单类型按援用传递?

咱们将内部 a 作为⼀个对象传⼊ test 函数.

    var a = {a: 1, b: 2};
    function test(x) { 
        x.a = 10; 
        console.log(x); 
    }
    test(a); // {a: 10, b: 2} 
    console.log(a); // {a: 10, b: 2}

能够看到, 在函数体内被批改的 a 对象也同时影响到了内部的 a 对象, 可⻅简单类型是按 引⽤传递 的.

可是如果再做⼀个试验:

    var a = {
        a: 1,
        b: 2
    }; 
    function test(x) {
        x = 10; 
        console.log(x); 
    }
    test(a); // 10 
    console.log(a); // {a: 10, b: 2}

内部的 a 并没有被批改, 如果是按引⽤传递的话, 因为共享同⼀个堆内存, a 在内部也会体现为 10 才对. 此时的简单类型 同时体现出了 按值传递 按引⽤传递 的个性

退出移动版