MST
星途 面试题库

面试题:JavaScript中对象与原始值比较的复杂场景

假设有两个自定义对象obj1和obj2,它们都定义了valueOf和toString方法。obj1的valueOf返回10,toString返回'obj1';obj2的valueOf返回20,toString返回'obj2'。当执行obj1 < obj2时,JavaScript引擎是如何进行比较的,最终结果是什么?并阐述详细的比较逻辑。
20.0万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
  1. 比较逻辑
    • 在JavaScript中,当使用<操作符比较两个对象时,会先尝试将对象转换为原始值。
    • 首先会调用对象的valueOf方法,如果valueOf返回的不是原始值(这里obj1obj2valueOf都返回原始值,分别是10和20),则会接着调用toString方法。
    • 由于obj1valueOf返回10,obj2valueOf返回20,这两个都是数字类型的原始值,所以JavaScript会直接比较这两个数字。
  2. 最终结果
    • 因为10小于20,所以obj1 < obj2的结果为true