console.log([1,2,3] > null); // returns false// "1,2,3" > null// NaN > null// false => Direct returns false ??该代码返回 false。通常 NaN > null 必须是数值比较。但结果返回错误。为什么?
1 回答
慕工程0101907
TA贡献1887条经验 获得超5个赞
遵循抽象关系比较算法中的步骤:
[1,2,3] > null
- 步骤 1 (a,b):将 ToPrimitive 应用于两侧"1,2,3" > null
- 步骤 4 (d, e):将 ToNumeric 应用于两侧
现在我们有了NaN > 0
,即false
因为任意时刻NaN
涉及任意关系运算,结果都是false
。
在对您提出的问题的评论中:
但为什么不比较就返回 false 呢。
>
是一个比较。我认为你的意思是“没有分支操作或表达式”(如if
或 条件运算符,? :
)。如果是这样,这是因为表达式(包括关系表达式)具有结果值,无论您是否使用这些结果进行分支。表达式的结果>
是true
or false
。如果您在 an 中使用它if
,那很好,但您不必:
const a = 1 > 2; console.log(a); // false
添加回答
举报
0/150
提交
取消