我有一个OR表达式,应该返回除NaN
之外的其他操作数:
(1 || NaN) // evaluates to 1
(NaN || 1) // evaluates to 1
但是当另一个操作数是0
,null
或undefined
时,JavaScript总是返回最右边的操作数:
(0 || NaN) // evaluates to NaN
(NaN || 0) // evaluates to 0
// same for combinations of 0, null and undefined
是否有一种方法可以适合期望的行为“将not NaN
的操作数返回”为一个简短的表达式,或者我是否必须依赖if / else构造?
使用if-else-expression,也称为条件运算符:
!isNaN(a) ? a : b
您可以在表达式的末尾添加默认的falsy值,例如
result = yourValue0 || yourValue1 || 0;
在这种情况下,您将得到truthy值yourValueX
或last falsy值。
尝试一下:
var notNaN = [value1, value2, value3].find(item => !Number.isNaN(item))