MST

星途 面试题库

面试题:JavaScript 关系操作符比较规则之复杂类型处理

给定JavaScript代码:const obj1 = { valueOf: () => 5 }; const obj2 = { toString: () => '3' }; 请判断obj1 > obj2 的结果,并详细说明在关系操作符比较过程中对象转换的步骤和依据。
30.3万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
  1. 结果true
  2. 对象转换步骤和依据
    • 在JavaScript中,当使用>关系操作符比较两个对象时,会尝试将对象转换为原始值进行比较。
    • 首先会调用对象的valueOf方法,如果valueOf方法返回的不是原始值,再调用toString方法。
    • 对于obj1,它有自定义的valueOf方法,返回5(一个原始值)。
    • 对于obj2,调用valueOf方法时,由于没有自定义valueOf,默认的valueOf方法返回obj2对象本身(不是原始值),于是会调用toString方法,obj2有自定义的toString方法,返回'3'
    • 然后进行比较,'3'会被隐式转换为数字3,最后比较5 > 3,结果为true