【发布时间】:2020-01-30 08:04:03
【问题描述】:
我有一个 OR 表达式,它应该返回除 NaN 之外的任何操作数:
(1 || NaN) // evaluates to 1
(NaN || 1) // evaluates to 1
但是当另一个操作数也是 0、null、undefined 或 false 之类的假值时,Javascript 总是返回最右边的操作数:
(0 || NaN) // evaluates to NaN
(NaN || 0) // evaluates to 0
// same for combinations of 0, null, undefined and false
有没有办法将所需的行为“返回 not NaN 的操作数”变成一个漂亮而简短的表达式,还是我必须依赖 if/else 构造?
【问题讨论】:
-
为什么不(总是)将
NaN作为第一个操作数? -
@Nina Scholz:例子简化了,我不知道
NaN是哪个操作数,每个操作数都是另一个函数/表达式的结果 -
你可以使用
ternary。 -
@all:我认为所有答案都很棒,我需要一些时间才能选择一个接受,谢谢!
标签: javascript operator-precedence