MST

星途 面试题库

面试题:JavaScript 复杂类型转换场景分析

分析下面代码执行过程中的类型转换,并说明最终输出结果:`const obj = { valueOf: function() { return '4'; }, toString: function() { return '5'; } }; console.log(1 + obj + 2);`
42.1万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
  1. 类型转换分析
    • 首先执行1 + obj,在加法运算中,当一个操作数是对象时,会尝试将对象转换为原始值。
      • 按照ECMAScript规范,对象转换为原始值的过程首先会调用valueOf方法,如果valueOf方法返回的不是原始值,再调用toString方法。
      • 这里objvalueOf方法返回'4',是一个字符串,所以1 + obj就相当于1 + '4'
      • 根据JavaScript的类型转换规则,当一个数字和一个字符串进行加法运算时,数字会被转换为字符串,所以1 + '4'结果为'14'
    • 然后执行'14' + 2,同样,数字2会被转换为字符串'2',然后进行字符串拼接。
  2. 最终输出结果
    • '142'