JS中的类型转换问题

178 阅读1分钟

本来打算年后辞职, 却碰上了疫情, 暂时打消了跳槽的想法。2020已经过半, 国内疫情已经开始稳定, 公司的很多小伙伴已经离职,自己也要开始准备面试,开始对前端对知识查漏补缺,首先开始的是js的类型转换问题, 业务中非常常见, 但是如果对转换规则不熟悉, 就很有可能出现错误。

今天就来好好巩固一下。


javaScript中类型的转换情况

js中只有3种类型转换, 如下:

  • 转字符串
  • 转数字
  • 转布尔值

js中的基础类型

开始正文之前, 先列出js的数据类型

原始类型

  • boolean
  • string
  • number
  • null
  • undefined
  • symbol

对象类型

  • function
  • math
  • date
  • Rex
  • Object
  • Array
  • Set
  • Map

类型转换的场景

1. 条件判断: 转布尔值

除了undefined, null, ‘’, 0, false, NaN, 其他所有值都会转为true

2. 四则运算

四则运算中, js会尝试把参与运算的目标转换为数字或者字符串, 这里通过macho来测试一波

原始类型中Symbol尝试使用加法运算符会**直接报错**(Uncaught TypeError: Cannot convert a Symbol value to a string/number)

  • 字符串 + 原始类型 = 字符串 // 把非字符串类型的目标转化为字符串
  • 数字 + 原始类型 = 数字 // 把非字符串或数字类型转化为数字
  • 原始类型 + 原始类型 // 转换为数字

注: 乘法运算与加法运算符相似, 会把另一方非数字类型转换为数字