Skip to content

隐式转换

什么是隐式转换

当运算符在运算时,若两端数据类型不统一,编译器会帮我们自动转换成相同类型的数据,这就是隐式类型转换

转换规则

转string

  1. Number, Boolean, null, undefined 直接变成字符类型
  2. Object
    • 普通对象 [object Object]
    • Map,Set [object Map], [object Set]
    • Date 例如Fri Apr 26 2024 16:45:25 GMT+0800 (中国标准时间)
    • Function 直接变成字符类型
    • 数组 提取各项然后输出

转number

  1. String 数值 | NaN
  2. null 0
  3. undefined NaN
  4. Object 转换成字符串然后再转换为number
  5. Boolean 0 | 1

转boolean

  1. Number 0 | NaN为false,其他为true
  2. null | undefined false
  3. Object true
  4. string ''为false, 其他为true

示例

js
const num1 = 2
const num2 = 0
const str1 = ''
const str2 = '253545'
const str3 = '25a3545'
const obj1 = {}
const obj2 = { a: 1 }
const obj3 = obj2
const arr1 = []
const arr2 = [0]
const arr3 = [0, 0]
const arr4 = [1, 2, 3]
const null1 = null
let undefined1
const fun = () => {}

console.log('---- 转string ----')
// number, null, undefined, Boolean
console.log(
  String(num1),
  String(num2),
  String(true),
  String(null1),
  String(undefined1)
)
// 对象
// 普通对象 [object Object], [object Object]
console.log(String(obj1), String(obj2))
// 数组 '', '0', '0,0', '1,2,3'
console.log(String(arr1), String(arr2), String(arr3), String(arr4))
// 函数
console.log(String(fun))
// Map, Set, Date
console.log(String(new Map()), String(new Set()), String(new Date()))

console.log('---- 转number ----')
// 字符串
console.log(+str1, +str2)
// 对象
console.log(+obj1, +obj2)
// 数组
console.log(+arr1, +arr2, +arr3, +arr4)
// null
console.log(+null1)
// underfined
console.log(+undefined1)

console.log('---- 转boolean ----')
// 字符串
console.log(!!str1, !!str2)
// 对象
console.log(!!obj1, !!obj2)
// 数组
console.log(!!arr1, !!arr2, !!arr3, !!arr4)
// null
console.log(!!null1)
// underfined
console.log(!!undefined1)

面试题

TODO