为什么不比较就返回 false?

console.log([1,2,3] > null); // returns false


// "1,2,3" > null

// NaN > null

// false => Direct returns false ??

该代码返回 false。通常 NaN > null 必须是数值比较。但结果返回错误。为什么?


慕森卡
浏览 66回答 1
1回答

慕工程0101907

遵循抽象关系比较算法中的步骤:[1,2,3] > null- 步骤 1 (a,b):将 ToPrimitive 应用于两侧"1,2,3" > null- 步骤 4 (d, e):将 ToNumeric 应用于两侧现在我们有了NaN > 0,即false因为任意时刻NaN涉及任意关系运算,结果都是false。在对您提出的问题的评论中:但为什么不比较就返回 false 呢。> 是一个比较。我认为你的意思是“没有分支操作或表达式”(如if或 条件运算符,? :)。如果是这样,这是因为表达式(包括关系表达式)具有结果值,无论您是否使用这些结果进行分支。表达式的结果>是trueor false。如果您在 an 中使用它if,那很好,但您不必:const a = 1 > 2; console.log(a); // false
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript