Something = Something = Something ...什么?

时间:2012-09-20 23:55:23

标签: javascript

我正在阅读一些代码,我看到的是这样的比较:

a = b = c

看到如何搜索关于平等或比较的Javascript如何产生补救结果,任何人都在关心解释发生了什么?

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

DOUBLE EDIT:这是在Object.defineProperties()块中。

5 个答案:

答案 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)

这不是比较。它是cb变量的a值的分配。

作业从右到左,因此首先是cb的作业。然后将该操作的返回值分配给a

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

答案 3 :(得分:3)

=运算符从右向左关联并评估已分配的值。

所以这个:

a = b = c;

表示这个*:

b = c;
a = c;

* 除非您正在处理属性。

答案 4 :(得分:2)

它等同于此;

b = c; a = b;