我正在阅读一些代码,并且看到了这样的比较:
a = b = c
看到搜索关于相等或比较的 Javascript 如何产生补救结果,有人愿意解释发生了什么吗?
编辑:这些都是我们在这里讨论的对象或对象属性,应该指定。
双重编辑:这是在 Object.defineProperties() 块内。
我正在阅读一些代码,并且看到了这样的比较:
a = b = c
看到搜索关于相等或比较的 Javascript 如何产生补救结果,有人愿意解释发生了什么吗?
编辑:这些都是我们在这里讨论的对象或对象属性,应该指定。
双重编辑:这是在 Object.defineProperties() 块内。
=
是一个运算符。它有两个参数:一个变量引用和一个表达式。它将表达式的值分配给变量,并返回分配的值。
因此,您可以将它们链接起来,这相当于:
a = (b = c)
换句话说,分配b
给 的值c
,然后将该值分配给a
也。
a = b = c
只是以下的简写:
b = c;
a = b;
if(a = b)
将始终返回true
,因为它正在分配,而不是比较。为了比较,该语句应为:if(a == b)
。
那不是比较。它是c
对b
和a
变量的赋值。
赋值从右到左工作,所以它是c
to b
first 的赋值。然后将该操作的返回值分配给a
。
赋值操作的返回值是被赋值的值,所以a
会得到相同的赋值给b
.
=
运算符从右到左关联并计算分配的值。
所以这:
a = b = c;
意思是*:
b = c;
a = c;
*除非您正在处理属性。
它等同于此;
b = c; a = b;