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



- 有且仅有一个操作数是 Boolean 会先将 Boolean 转化为 Number (true -> 1, false -> 0)
- 一个操作数是 String 另一个是 Number 会先将 String 转化为 Number
- 有且仅有一个操作数是对象类型则会调用 valueOf()、toString() 进行转化
举 🌰 子
'true' == true
[1] == 1
null == false
null == true
undefined == false
undefined == true
[1, 2, 3] == [1, 2, 3]
- 若 + 号两侧其中一个为字符串类型,那么会将另一侧也转为字符串类型,然后进行字符串拼接
- 若 + 号两侧其中一个为数字类型,那么会将另一侧也转为数字类型,然后进行计算
- 若 + 号右侧为对象类型,会先将它转化为字符串类型
- 若 + 号左侧声明了一个大括号那种对象,很多情况下 js 引擎会将它认成一个代码块而忽略计算
- 若 + 号左侧没内容,会先将右侧内容转为数字类型
举 🌰 子
5 + '1'
'5' + 1
'foo' + + 'bar'
[] + []
[] + {}
{} + []
{} + {}
- 若 - 号两侧不为数字类型则全转成数字类型后再进行计算
- 若 - 号左侧没内容,会先将右侧内容转为数字类型
举 🌰 子
NaN == NaN
undefined == null