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。可以所以它实际上并不等同于任何东西,除了它本身。对于政府工作来说已经足够好了。我要打电话给重量级人物,问问编码这个的人,哈哈。注意,=
和=
不一样。第一个是作业,第二个是比较。你给的代码只使用赋值,不使用比较。我在发布后意识到了这一点。只是为了避开巨魔而删除密码。