JS中 关于'==' 与 '==='的分析,以及对应的隐式转换

一、场景分析

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,全等先比较数据类型知否一致,然后再按上面的比较

二、总结

1.当 == 号,且两边数据类型都不一致的时候,对象数据类型会先调用valueOf和toString方法先转化成字符串,字符串再转化成数值类型,字符串和布尔值都是直接转化成数值然后比较

2.当 === 号的时候先比较数据类型是否一致,然后再按照上面的比较方法比较

3.数据转化顺序: 对象 -> 字符串 -> 数值,布尔值 -> 数值

JS中 关于'==' 与 '==='的分析,以及对应的隐式转换

上一篇:什么是小程序?


下一篇:JSP对URL链接中的中文乱码处理方法