关于引用变量赋值问题 我的理解

在看谷粒学院 JavaScript 进阶 课程的时候,老师讲到了引用变量赋值的问题,关于以下这一部分并不是很理解。 

var a = {age: 12};

var b = a; 

a = {name: "Bob", age: 13};

b.age = 14

console.log(b.age, a.name, a.age); // 14 Bob 13


function fn2 (obj) {

obj = {age: 15};

}

fn2(a);

console.log(a.age);  // 13

我便回顾了一下 JavaScript 基础课程 p59 (函数作用域) 。李立超老师讲了一句非常帮助理解的话:在函数中传一个形参就相当于在函数作用域中声明一个新的变量。

所以我们再看这个例子,把 a 作为实参传入 fn2 中的过程便相当于:

var obj = a;

obj = {age: 15};

这样便很清楚地可以看到,传实参相当于把 a 的内容复制一份给 obj ,接着 obj 又指向了另一个内容。可见 a 的内容并没有改变。

所以打印出的值为 13 。

自己琢磨出来的,不知是否正确或妥当。希望帮助大家理解。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值