美文网首页
值传递和引用传递——javascript

值传递和引用传递——javascript

作者: last_edc | 来源:发表于2017-12-24 10:25 被阅读7次

    1.javascript
    所有函数的基本类型参数都是按值传递,而Object类型是共享传递(call by share)

    function change(a,b,c){
        a = a +1
        b.value = 2
        c = {value:3}
    }
    var a = 1
    var b = {value:1}
    var c = {value:1}
    change(a,b,c)
    console.log(a,b,c)//结果是1,{value:2},{value:2}
    

    a是值传递,函数上下文中的a改变对外面的a不造成任何影响
    b是共享传递,函数上下文中的b和函数外的b指向的是同一个对象(可以理解为指向同一个地址),函数内b指向的对象改变了属性值,函数外的b也指向的是同一对象,该对象属性值发生了变化。
    c是共享传递,函数外的c指向的对象,传给了函数上下文中的c,函数执行时,刚开始 函数中的c是指向该对象的,但是赋值操作后,函数上下文中的c又指向了另一个对象,并没有对赋值前的对象做出改变。

    参考了stackflow,链接如下

    https://stackoverflow.com/questions/518000/is-javascript-a-pass-by-reference-or-pass-by-value-language?rq=1

    相关文章

      网友评论

          本文标题:值传递和引用传递——javascript

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