
null+ undefined
图解思路:

NaN+'1'
图解思路:
- 判断两边是否都是原始数据类型 => NaN与'1'都是基本数据类型
- 判断是否有字符串 => '1'是字符串
- 都转为字符串 => 进行字符串的拼接

1+true
图解思路:
- 判断两边是否都是原始数据类型 => 1与true都是基本数据类型
- 判断是否有字符串 => 不存在字符串
- 都转为数字 => 进行数字的加法运算

[1]+1
图解思路:
- 判断两边是否都是原始数据类型 => [1]是对象类型
- 调用valueOf(),看是否能转成原始数据类型=> 不能转成原始类型
- 继续调用toString(),看是否能转成基本数据类型 => [1]能转成'1',然后再按原始类型进行推断,有字符串拼接

var obj = {valueOf:function(){return this},toString:function(){return this}}obj+1

图解思路:
obj是对象类型valueOf(),看是否能转成原始数据类型=> 不能转成原始类型toString(),看是否能转成基本数据类型 => 不能转成字符串[1,2]+{n:1}
图解思路:
valueOf(),看是否能转成原始数据类型=> 不能转成原始类型toString(),看是否能转成基本数据类型 => [1,2]能转成'1,2',{n:1}能转成[object Object],然后再按原始类型进行推断,有字符串拼接