Javascript OR Expression:返回不是* NaN的操作数

问题描述 投票:0回答:2

我有一个OR表达式,应该返回除NaN之外的其他操作数:

(1 || NaN) // evaluates to 1 
(NaN || 1) // evaluates to 1

但是当另一个操作数是0nullundefined时,JavaScript总是返回最右边的操作数:

(0 || NaN) // evaluates to NaN
(NaN || 0) // evaluates to 0
// same for combinations of 0, null and undefined

是否有一种方法可以适合期望的行为“将not NaN的操作数返回”为一个简短的表达式,或者我是否必须依赖if / else构造?

javascript operator-precedence
2个回答
1
投票

使用if-else-expression,也称为条件运算符:

!isNaN(a) ? a : b

1
投票

您可以在表达式的末尾添加默认的falsy值,例如

result = yourValue0 || yourValue1 || 0;

在这种情况下,您将得到truthyyourValueXlast falsy值。


1
投票

尝试一下:

var notNaN = [value1, value2, value3].find(item => !Number.isNaN(item))
© www.soinside.com 2019 - 2024. All rights reserved.