gpt4 book ai didi

javascript - 解释这个javascript代码

转载 作者:行者123 更新时间:2023-11-29 18:07:16 24 4
gpt4 key购买 nike

我有一个关于变量赋值的问题

var foo = {n: 1};

foo.x = foo = {n: 2};

console.log(foo.x) // undefined

为什么 foo.xundefined

最佳答案

= 赋值运算符是右结合的,这意味着赋值链从右到左求值。即语言对待这个

x = y = x+2;

好像是写的

x = (y = x+2);

所以首先 y 被赋予了加法的结果 (5),然后 x 被赋予了那个赋值的值,这也是 5

你问题中的第一个例子是同一个故事,但事情有点复杂:

foo.x = foo = { n: 2 };

第一个赋值对象是 foo。但是,在此之前,语言将确定 foo.x 的引用值,这是对 原始 foo 对象。因此,当对那个属性进行右手赋值时,它确实有效,但属性是在旧对象上设置的,而不是新对象!

让我们换个例子:

var foo = {n: 1}, foo2 = foo;

foo.x = foo = {n: 2};

console.log(foo2.x); // { n: 2 }

该版本在变量 foo2 中保留了对 foo 原始值的另一个引用。即使 foo 在双重赋值中被覆盖,foo2 仍将继续引用原始的 foo

关于javascript - 解释这个javascript代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30332624/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com