JavaScript中的"==" 和 "===" 的用法:
"=="判断相等的隐式转换机制
1. 判断是否有NaN(not a Number 非数 是计算机科学中数值数据类型的一种,表示未定义 或者不可表示的值)
判断等式两边是否有NaN数,如果有,一律判定为false
2. 是否有Boolean值
2.1 一边为Boolean类型,一边为表达式
判断表达式的布尔值与Boolean进行比较
2.2 一边为Number类型,一边为Boolean类型
将Boolean类型转换为Number,false = 0,true = 1,然后进行比较
3.null和undefined
遇到nul或者undefined,不进行数据类型转换,二者之间的比较,返回true
4. 有一边是字符串
4.1 另一边同样是String
直接对等式两边的值进行比较
4.2 另一边为Number类型
将String转换为Number类型进行比较
4.3 另一边是Boolean类型
同时将String类型和Boolean类型转换为Number类型,然后进行比较 (false = 0,true = 1)
4.4 另一边是对象或者数组
则需要调用toString()方法或者valueOf()方法转换为简单类型,然后进行比较
对象转换为简单类型时会有限调用valueOf()方法,如果能与简单类型进行直接比较,则不再调用toString()方法,否则调用toString()方法
"===":比较的是数据类型+值
两者必须完全相等才为true
摘自:https://blog.csdn.net/qq_37530031/article/details/78317823