前端基础之js加法隐式转换

先做个小测试，不要百度和写代码测试
下面的输出都是什么

Copy
1 + 1

'1' + 1

1 + true

NaN + 1

NaN + '1'

null + 1

null + '1'

[1] + 1

[1,2] + [1]

[1] + {n : 1}

如果说你对上面这些运算有一些模糊不清的地方，那么估计你加法隐式转换没有搞清楚
加法运算的规则到底是什么呢
一张图让你明明白白

ok，我们来看个例子

看着上面的图来捋一捋
两边都是原始类型，都不是字符串，所以都要转为数字类型

相当于 0 + NaN，所以最后结果是 NaN

再比如上面里的 [1] + 1

是含有对象类型的，要调用 valueOf

调用之后不是原始类型，那就要调用 toString

转成原始类型了，走上面的步骤，含有字符串，全部转为字符串相加，所以结果是 '11'

再看一个例子

它这里报错了，提示无法把这个对象转换为原始类型，这是因为 valueOf 和 toString 无法把 obj 转换为原始类型

这些东西，往往会出现在面试题里面，考察你对知识点有没有理解到位，大家努力吧