MST

星途 面试题库

面试题:JavaScript 中的强制类型转换与隐式转换:复杂场景分析

以下代码输出结果是什么,并详细说明在执行过程中发生的强制类型转换与隐式转换: ```javascript let a = { valueOf: function() { return '1'; } }; let b = { toString: function() { return '2'; } }; console.log(a == b); ```
25.6万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
  1. 输出结果false

  2. 强制类型转换与隐式转换分析

    • 在JavaScript中,当使用==进行比较时,如果两边的操作数类型不同,会进行隐式类型转换。
    • 对于a == bab都是对象类型。当比较两个对象时,==运算符首先会尝试将它们转换为基本类型。
    • 对于对象,JavaScript会按照valueOf -> toString的顺序尝试转换。
    • 对于a,调用a.valueOf()方法,返回'1',这是一个字符串类型。
    • 对于b,调用b.toString()方法,返回'2',也是字符串类型。
    • 然后比较这两个字符串'1''2',由于它们不相等,所以最终结果为false。整个过程中涉及对象到基本类型(字符串)的隐式转换。