记 js 中一些类型转换的坑

最后更新于 December 27, 20192 min read

类型转换从初学 js 时就接触,但一直没能记牢,最近面试吃了大亏,自尊心深受打击,还是好好整理一下吧 🌚

显式转换

Number() 转换规则

Z9DMgikfOat5spS

Boolean() 转换规则

CmPU5EbuJyFLKXo

String() 以及不同对象 toString() 转换规则

FDGyP9dIbaKXTLC

隐式转换

== 操作符隐式转换

  1. 有且仅有一个操作数是 Boolean 会先将 Boolean 转化为 Number (true -> 1, false -> 0)
  2. 一个操作数是 String 另一个是 Number 会先将 String 转化为 Number
  3. 有且仅有一个操作数是对象类型则会调用 valueOf()、toString() 进行转化

举 🌰 子

js

+ 号运算符隐式转换

  1. 若 + 号两侧其中一个为字符串类型,那么会将另一侧也转为字符串类型,然后进行字符串拼接
  2. 若 + 号两侧其中一个为数字类型,那么会将另一侧也转为数字类型,然后进行计算
  3. 若 + 号右侧为对象类型,会先将它转化为字符串类型
  4. 若 + 号左侧声明了一个大括号那种对象,很多情况下 js 引擎会将它认成一个代码块而忽略计算
  5. 若 + 号左侧没内容,会先将右侧内容转为数字类型

举 🌰 子

js

- 号运算符

  • 若 - 号两侧不为数字类型则全转成数字类型后再进行计算
  • 若 - 号左侧没内容,会先将右侧内容转为数字类型

举 🌰 子

js

一些注意点

js

Built with Next.js • Deployed on Vercel
©2022 xiaojun