在Javascript console.log中((NaN || 9)); //返回9,为什么会这样?

时间:2017-12-14 00:15:50

标签: javascript node.js

我注意到我的时间:

console.log(( NaN||9) );  // returns 9

为什么会这样? 为什么,当你评价 - 括号 - NaN OR 9,它选择9? 它适用于0,-3,“f”。有人可以告诉我在后台发生了什么导致这个结果?

2 个答案:

答案 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)。