美文网首页
再学JS--函数参数传递类型

再学JS--函数参数传递类型

作者: Territory_Cheng | 来源:发表于2020-04-22 09:42 被阅读0次

    JavaScript的函数参数传递分为按值传递、按引用传递以及按共享传递。

    按值传递

    什么是按值传递?

    把函数外部的值复制给函数内部的参数,就和把值从一个变量复制到另一个变量一样。

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

    当传递value到函数foo中的时候,相当于拷贝了一份value,假设拷贝的这份叫做_value,函数中修改的都是_value的值,而不会影响原来的value值。

    引用传递

    引用传递就是传递对象的引用,函数内部对参数的任何改变都会影响该对象的值,因为两者引用的是同一个对象。

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

    按共享传递

    什么是按共享传递?再看个例子

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

    共享传递是指在传递对象的时候,传递对象引用的副本。

    注意:按引用传递是传递对象的引用,而按共享传递是传递对象的引用的副本。

    所有如果修改o.value可以通过引用找到原值,但是直接修改o,并不会修改原值。所以第二、第三个例子其实都是按共享传递。

    相关文章

      网友评论

          本文标题:再学JS--函数参数传递类型

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