一、==的运算规则分为三种
1. 特殊类型: undefined == null NaN != NaN 这两种特殊类型都为true
2. 类型相同: 比如都是number或string,直接比较值就行
3. 类型不同: 一端为number,一端为string,会把字符串转为number,在进行比较;
一端为原始型(number,string),一端为对象,会把对象转换为原始型再进行比较,转换规则为,先调用valueOf(),若无法转换成原始型再调用toString(),
例如: let obj = {}
obj.valueOf() // 这里成了 {},再调用toSting(), {}.toString() // 这里转换成了字符串'[Object,Object]'
所以,如果拿 {} == '[Object,Object]' 做比较,这里的结果为true