4

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

a = b = c

看到搜索关于相等或比较的 Javascript 如何产生补救结果,有人愿意解释发生了什么吗?

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

双重编辑:这是在 Object.defineProperties() 块内。

4

5 回答 5

4

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

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

a = (b = c)

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

于 2012-09-20T23:57:10.300 回答
4

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

b = c;
a = b;

if(a = b)将始终返回true,因为它正在分配,而不是比较。为了比较,该语句应为:if(a == b)

于 2012-09-20T23:57:53.937 回答
3

那不是比较。它是cba变量的赋值。

赋值从右到左工作,所以它是cto bfirst 的赋值。然后将该操作的返回值分配给a

赋值操作的返回值是被赋值的值,所以a会得到相同的赋值给b.

于 2012-09-20T23:56:47.150 回答
3

=运算符从右到左关联并计算分配的值。

所以这:

a = b = c;

意思是*:

b = c;
a = c;

*除非您正在处理属性。

于 2012-09-20T23:58:01.483 回答
2

它等同于此;

b = c; a = b;
于 2012-09-20T23:56:50.393 回答