为了账号安全,请及时绑定邮箱和手机立即绑定

js 在 按引用类型传值 在一些情况下 不起作用

js 在 按引用类型传值 在一些情况下 不起作用

小怪兽爱吃肉 2019-02-05 17:49:18
举例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函数依然指向原函数。
查看完整描述

1 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

已经知道答案了,
因为 ctx = ctx.data 之后,和原对象断开了连接

就像

var obj = {}obj = 123;

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


查看完整回答
反对 回复 2019-02-05
  • 1 回答
  • 0 关注
  • 382 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信