我注意到我的时间:
console.log(( NaN||9) ); // returns 9
为什么会这样? 为什么,当你评价 - 括号 - NaN OR 9,它选择9? 它适用于0,-3,“f”。有人可以告诉我在后台发生了什么导致这个结果?
答案 0 :(得分:2)
在JavaScript中,NaN
是一个" falsy"值。 ||
运算符计算其第一个参数(如果是" truthy")或者第二个参数(如果第一个参数是" falsy")。因此NaN || 9
评估为9
。
来自the docs for logical operators:
逻辑运算符通常与布尔(逻辑)值一起使用。如果是,则返回布尔值。但是,
&&
和||
运算符实际上返回其中一个指定操作数的值,因此如果这些运算符与非布尔值一起使用,则它们可能返回非布尔值。
和||
具体来说:
如果可以转换为
expr1
,则返回true
;否则,返回expr2
。因此,当与布尔值一起使用时,如果任一操作数为||
,true
将返回true
。
答案 1 :(得分:0)
简短回答,因为NaN
是假的。
这里是list of falsy values in javascript。
javascript中的逻辑OR运算符||
可能很棘手,但一旦你知道它是如何工作的,它既简单又方便。如果它的左侧是假的,那么它的结果将是它的右侧(在你的情况下,数字9
)。