Stack Overflow 上的总结
Which equals operator (== vs ===) should be used in JavaScript comparisons?
//
===
严格相等(strict equality)操作符
==
抽象相等(abstract equality)操作符
二者之间的区别是,==
在进行任何必要的类型转换之后再比较两个值是否相等,比较宽松。当左右两边的操作数类型相同时,==
比较会做正确的事情,但是类型不同时,==
会运用十分复杂的规则进行类型转换。
而 ===
一旦两个值类型不同就返回 false
,没有类型转换这一步。
两个操作符效率等同。
'' == '0' // false
0 == '' // true
0 == '0' // true
false == 'false' // false
false == '0' // true
false == undefined // false
false == null // false
null == undefined // true
' \t\r\n ' == 0 // true