美文网首页
2019-06-26

2019-06-26

作者: 独角仙没有角 | 来源:发表于2019-06-26 20:26 被阅读0次

    深入理解JavaScript 参数按值传递

    定义:ECMAScript中所有函数的参数都是按值传递的。

    值传递函数外部的值复制给函数内部的参数,就和把值从一个变量复制到另一个变量一样。通俗一点就是,拷贝一个值到新的互不干扰的内存空间存放,想象成ctrl + cctrl + v复制粘贴

    var val = 1;
    function foo(v) {
        v = 2;
        console.log(v); //2
    }
    foo(val);
    console.log(val) // 1
    

    引用传递:传递对象的引用,函数内部对参数的任何改变都会影响该对象的值,因为两者引用的是同一个对象,通俗一点讲就是创建快捷方式

    var obj = {
        value: 1
    };
    function foo(o) {
        o.value = 2;
        console.log(o.value); //2
    }
    foo(obj);
    console.log(obj.value) // 2
    

    注意第三个例子
    共享传递:在传递对象的时候,传递对象的引用的副本

    var obj = {
        value: 1
    };
    function foo(o) {
        o = 2;
        console.log(o); //2
    }
    foo(obj);
    console.log(obj.value) // 1
    

    如若采用引用传递,则外层的值应该会被修改,但是没有,因此不是引用传递。而是共享传递
    注意: 按引用传递是传递对象的引用,而按共享传递是传递对象的引用的副本!

    相关文章

      网友评论

          本文标题:2019-06-26

          本文链接:https://www.haomeiwen.com/subject/layhcctx.html