MST

星途 面试题库

面试题:JavaScript 关系操作符比较规则之边界与特殊情况剖析

考虑JavaScript中的NaN、Infinity等特殊值,分析以下一系列关系操作符表达式的结果及背后的比较规则:NaN > 5 、 Infinity < Infinity 、 -Infinity < Infinity 、'abc' < NaN 。并且,如果在严格模式和非严格模式下,这些比较规则和结果是否会有差异?如果有,请说明差异在哪里。
20.4万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
  1. NaN > 5
    • 结果false
    • 比较规则NaN与任何值(包括它自身)进行比较,结果都为false。这是因为NaN表示“不是一个数字”,它不遵循常规的数字比较规则。
  2. Infinity < Infinity
    • 结果false
    • 比较规则Infinity表示正无穷大,它是一个特殊的数值。两个Infinity进行比较时,因为它们表示的都是无穷大,所以Infinity并不小于自身,结果为false
  3. -Infinity < Infinity
    • 结果true
    • 比较规则-Infinity表示负无穷大,Infinity表示正无穷大,按照常规的数值大小概念,负无穷大小于正无穷大,所以结果为true
  4. 'abc' < NaN
    • 结果false
    • 比较规则:首先,'abc'会尝试转换为数字,由于无法转换为有效的数字,会得到NaN。然后NaNNaN进行比较,根据NaN的比较规则,结果为false

在严格模式和非严格模式下,这些比较规则和结果没有差异。因为这些特殊值(NaNInfinity等)的比较规则是JavaScript语言规范所定义的基础行为,不受严格模式和非严格模式的影响。