先做个小测试,不要百度和写代码测试
下面的输出都是什么
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 转换为原始类型
这些东西,往往会出现在面试题里面,考察你对知识点有没有理解到位,大家努力吧