账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    js 在 按引用类型传值 在一些情况下 不起作用
    • 2019-01-16 00:00
    • 11
    34
    0

    举例

    
    var a = function (ctx) {
        debugger // ctx {data: 555, name: 777}
        b(ctx);
        debugger; // ctx {data: 555, name: 777}
        return ctx;
    }
    var b = function (ctx) {
        ctx.age = 7;  // 对的,我能影响到 传入的对象
        ctx = ctx.data; // 案例来说 ctx 已经变成了 555才对呀为啥不起作用
        
        debugger; // ctx 555
    }
    let d = a({
        data: 555,
        name: 777
    });
    console.log(d); // {data: 555, name: 777, age: 777} ??? 我以为是 555
    

    我有点蒙,这是按引用类型传值, b函数对 传来的对象做了更改, 加个 age属性起作用了。可是ctx = ctx.data; 不起作用我有点蒙蔽

    好吧,知道了,因为 ctx = ctx.data 之后,和原对象断开了连接

    就像

    
    
    var obj = {}
    obj = 123;
    

    引用已经断开了联系,b函数并没有更改 ctx 对象,是更改了b函数内ctx这个变量指向,a函数依然指向原函数。

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部