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

变量赋值如何在JavaScript中工作?

变量赋值如何在JavaScript中工作?

吃鸡游戏 2019-07-30 11:18:23
变量赋值如何在JavaScript中工作?所以我前几天正在玩,只是为了确切了解JavaScript中的大规模分配是如何工作的。首先我在控制台中尝试了这个例子:a = b = {};a.foo = 'bar';console.log(b.foo);结果是“警报”显示在警报中。这是公平的,a并且b实际上只是同一对象的别名。然后我想,我怎么能让这个例子更简单。a = b = 'foo';a = 'bar';console.log(b);这几乎是一回事,不是吗?那么这一次,它foo不会bar像我期望的那样返回第一个例子的行为。为什么会这样?注意:使用以下代码可以更简化此示例:a = {};b = a;a.foo = 'bar';console.log(b.foo);a = 'foo';b = a;a = 'bar';console.log(b);(我怀疑JavaScript将字符串和整数等原语与哈希处理不同。哈希返回指针,而“核心”原语返回自己的副本)
查看完整描述

3 回答

?
开满天机

TA贡献1786条经验 获得超13个赞

在第一个示例中,您要设置现有对象的属性。在第二个示例中,您将分配一个全新的对象。

a = b = {};

ab现在用于指向同一个对象。所以当你这样做时:

a.foo = 'bar';

它规定b.foo,以及因为ab指向同一个对象。

然而!

如果你这样做:

a = 'bar';

你说现在a指向另一个对象。这a对前面指出的内容没有影响。

在JavaScript中,分配变量和分配属性是两种不同的操作。最好将变量视为对象的指针,当您直接分配给变量时,您不会修改任何对象,只是将变量重新分配给不同的对象。

但是,分配属性,a.foo将修改a指向的对象。当然,这也会修改指向此对象的所有其他引用,因为它们都指向同一个对象。


查看完整回答
反对 回复 2019-07-30
  • 3 回答
  • 0 关注
  • 369 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号