MST

星途 面试题库

面试题:JavaScript 中的强制类型转换与隐式转换:基本规则考察

请解释 JavaScript 中 == 操作符在比较不同类型值时的隐式转换规则,并举例说明。例如 '5' == 5 是如何进行隐式转换并得出结果的。
46.1万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

1. 规则概述

  1. 字符串与数字比较:将字符串转换为数字进行比较。
  2. 布尔值与其他类型比较:布尔值 true 转换为 1false 转换为 0 后再进行比较。
  3. 对象与其他类型比较:对象通过 ToPrimitive 抽象操作转换为原始值,一般先尝试调用 valueOf 方法,如果返回的不是原始值,再调用 toString 方法。

2. 举例说明

  1. 字符串与数字比较
'5' == 5; 
// 这里 '5' 会被转换为数字 5,5 == 5 结果为 true
  1. 布尔值与数字比较
true == 1; 
// true 转换为 1,1 == 1 结果为 true

false == 0; 
// false 转换为 0,0 == 0 结果为 true
  1. 对象与数字比较
const obj = { valueOf: function() { return 5; } };
obj == 5; 
// obj 通过 valueOf 方法转换为 5,5 == 5 结果为 true

const arr = [5]; 
arr == 5; 
// arr 先调用 valueOf 方法返回自身不是原始值,再调用 toString 方法返回 '5','5' 转换为 5,5 == 5 结果为 true