面试题答案
一键面试- 比较
obj1
和obj2
:- 在JavaScript中,当使用
>
关系操作符比较两个对象时,会先调用对象的valueOf
方法获取原始值。 - 对于
obj1
,obj1.valueOf()
返回5
,对于obj2
,obj2.valueOf()
返回10
。 - 然后比较这两个原始值,即
5 > 10
,结果为false
。
- 在JavaScript中,当使用
- 比较
obj1
和obj3
:- 当比较
obj1
和obj3
时,obj1
有valueOf
方法,调用obj1.valueOf()
返回5
。 obj3
没有valueOf
方法,此时JavaScript会调用obj3
的toString
方法,obj3.toString()
返回'8'
。- 由于一个操作数是数字(
5
),另一个是字符串('8'
),JavaScript会将字符串'8'
转换为数字8
。 - 最后比较
5
和8
,即5 > 8
,结果为false
。
- 当比较
总结:在关系操作符>
比较对象时,优先调用valueOf
方法获取原始值进行比较,如果没有valueOf
方法,则调用toString
方法获取原始值进行比较,并且会在必要时进行类型转换,将字符串转换为数字等合适类型后再进行比较。