我正在阅读一些代码,我看到的是这样的比较:
a = b = c
看到如何搜索关于平等或比较的Javascript如何产生补救结果,任何人都在关心解释发生了什么?
编辑:这些是我们在这里讨论的所有对象或对象属性,应该已经指定。
DOUBLE EDIT:这是在Object.defineProperties()块中。
答案 0 :(得分:4)
=
是一名运营商。它需要两个参数:变量引用和表达式。它将表达式的值赋给变量,并返回指定的值。
因此,您可以链接它们,它等同于:
a = (b = c)
换句话说,将b
分配给c
的值,然后将该值也分配给a
。
答案 1 :(得分:4)
a = b = c
只是简写表达式:
b = c;
a = b;
if(a = b)
将始终返回true
,因为它正在分配,而不是比较。要进行比较,该陈述应为:if(a == b)
。
答案 2 :(得分:3)
这不是比较。它是c
和b
变量的a
值的分配。
作业从右到左,因此首先是c
到b
的作业。然后将该操作的返回值分配给a
。
分配操作的返回值是已分配的值,因此a
将获得分配给b
的相同值。
答案 3 :(得分:3)
=
运算符从右向左关联并评估已分配的值。
所以这个:
a = b = c;
表示这个*:
b = c;
a = c;
* 除非您正在处理属性。
答案 4 :(得分:2)
它等同于此;
b = c; a = b;