Javascript 某物。。。什么?

Javascript 某物。。。什么?,javascript,Javascript,我正在阅读一些代码,我看到一个比较,如下所示: a=b=c 看到搜索Javascript中的相等或比较是如何产生补救结果的,有人想解释一下发生了什么吗 编辑:这些是我们在这里讨论的所有对象或对象属性,都应该指定 双重编辑:它位于Object.defineProperties()块内部。这不是比较。它是将c的值赋值给b和a变量 赋值从右向左进行,因此它首先是c到b的赋值。然后将该操作的返回值分配给a 赋值操作的返回值是已赋值的值,因此a将获得分配给b的相同值,它等同于此 b = c; a = b;

我正在阅读一些代码,我看到一个比较,如下所示:

a=b=c

看到搜索Javascript中的相等或比较是如何产生补救结果的,有人想解释一下发生了什么吗

编辑:这些是我们在这里讨论的所有对象或对象属性,都应该指定


双重编辑:它位于Object.defineProperties()块内部。

这不是比较。它是将
c
的值赋值给
b
a
变量

赋值从右向左进行,因此它首先是
c
b
的赋值。然后将该操作的返回值分配给
a

赋值操作的返回值是已赋值的值,因此
a
将获得分配给
b

的相同值,它等同于此

b = c; a = b;

=
是一个运算符。它有两个参数:变量引用和表达式。它将表达式的值指定给变量,并返回指定的值

因此,您可以将它们链接起来,这等同于:

a = (b = c)

换句话说,将
b
分配给
c
的值,然后将该值也分配给
a

a=b=c
只是以下的简写表达:

b = c;
a = b;

if(a=b)
将始终返回
true
,因为它是赋值,而不是比较。要进行比较,语句应为:
if(a==b)

运算符从右向左关联,并计算为指定的值

因此:

a = b = c;
意思是*:

b = c;
a = c;


*除非你处理的是属性。

严格来说不是真的,它更像是
b=c;a=c-当然,这两者完全相同,但是
=
会“返回”指定的值。
如果(a=b)
不一定是
真的
。如果
b
是falsy,
a=b
是falsy。我实际上是在处理对象及其属性,而不是简单的变量。@user23875:我指的是动态属性。你几乎肯定不是在和那些人打交道。是的,我是。从技术上讲,这是在Object.defineProperties()块中。@user23875:Whoa。可以所以它实际上并不等同于任何东西,除了它本身。对于政府工作来说已经足够好了。我要打电话给重量级人物,问问编码这个的人,哈哈。注意,
=
=
不一样。第一个是作业,第二个是比较。你给的代码只使用赋值,不使用比较。我在发布后意识到了这一点。只是为了避开巨魔而删除密码。