面试题答案
一键面试- 比较操作过程:
- 在JavaScript中,当使用
>
运算符比较两个对象obj1
和obj2
时,会尝试将对象转换为原始值进行比较。 - 这里对象
obj1
和obj2
都定义了valueOf
方法,所以会调用它们的valueOf
方法来获取原始值。obj1.valueOf()
返回1
,obj2.valueOf()
返回2
。 - 然后比较这两个原始值,即
1 > 2
,结果为false
。
- 在JavaScript中,当使用
- 涉及的JavaScript类型转换规则:
- 对象到原始值的转换:
- 当需要将对象转换为原始值进行比较等操作时,JavaScript首先尝试调用对象的
valueOf
方法。如果valueOf
方法返回的不是原始值(例如还是一个对象),则会尝试调用toString
方法。在本题中,obj1
和obj2
的valueOf
方法都返回了原始值(数字),所以直接使用valueOf
返回的值进行比较。
- 当需要将对象转换为原始值进行比较等操作时,JavaScript首先尝试调用对象的
- 数字比较规则:
- 一旦得到两个原始的数字值,就按照常规的数字比较规则进行比较。在本题中,
1
小于2
,所以1 > 2
返回false
。
- 一旦得到两个原始的数字值,就按照常规的数字比较规则进行比较。在本题中,
- 对象到原始值的转换:
所以console.log(obj1 > obj2)
输出false
。