Javascript逻辑运算符和赋值?

时间:2015-08-12 22:46:25

标签: javascript jquery logic

images

上面代码中显然x = 1 || 2; alert(x); x = undefined || 2; alert(x); 没有返回布尔值。它返回第一个有效值,在第一种情况下为1,在第二种情况下为2。

还有其他任何我应该注意的陌生感吗?

1 个答案:

答案 0 :(得分:2)

||中的x || y运算符将在第一个操作数中计算,如果它是真实的,则第二个操作数是第一个操作数,如果第一个操作数不是真的。它是documented on MDN here

Javascript中的

truthy被描述为here on MDN。它基本上是除falsey值之一以外的任何值:

false
null
undefined
0
NaN
""

所以,你必须将||运算符视为真实的,而不是纯粹的布尔运算符。

操作员按照指定的方式工作,成千上万的开发人员以这种方式学习并成功使用它。它不是纯布尔运算符。它不一定返回布尔值。这与其他一些语言不同。如果你想打电话给不同的“奇怪”,欢迎你提出意见。但是,它就是它,它一直是Javascript中的这种方式。

很容易理解它的作用并将其用于此。一旦理解了设计意图,它的规范或实现就没有真正的陌生感或不可预测性。

它与来自其他语言的某些人可能期望的不同,但这不是任何语言的目标。每种语言都有自己的设计,必须学会正确使用它。