一、场景分析
1. 两边数据类型相同的时候,这种情况 == 和 === 结果是一样的,如
‘a‘ == ‘b‘ //false ,当两边都是字符串的时候比较两边的ASCII码,可以通过str.charCodeAt(index)获取
[] == [] // false,这种情况不会调用valueOf方法,因此直接比较复杂数据类型内存地址是否一致,这是两个不同的数组,因此false,{}同理
2. 两边数据类型不相同的时候,如
2.1 ‘==‘的时候
‘a‘ == true // true, ‘a‘转化成数值1,true转化成数值1
[] == true// false, []先调用valueOf方法,将[]转化成‘‘空字符串,然后空字符串再转化成数值0,true转化成数值1
2.1 ‘===‘的时候
‘a‘ === true //false,全等先比较数据类型知否一致,然后再按上面的比较