Js中 == 和 === 的区别小白指南
” == ” 情况
1、两个不同的基本数据类型: 如果两个基本数据类型(string、number)不同,会将它们转化为数据类型,再进行比较。例如:
0 == '' // true
0 == '0' // true
1 == '1' // true
'0' == '' // false
false == '0' // true
false == 'false' // false
false == null // false
false == undefined // false
null == undefined // true
0 === '' // false
0 === '0' // false
1 === '1' // false
false === '0' // false
null === undefined // false
2、 基本数据类型与引用数据类型: 将引用数据类型(function、object,其中object包含array)转化(后台自动调用 `Object.prototype.valueOf() )为它的原始值,再进行比较。例如:
[1,2] == '0' // true
function(){return ['1,2']}() == '1,2' // true
[1,2] === '0' // false
function(){return ['1,2']}() === '1,2' // false
3、 两个引用类型: 判断两者之间的引用路径。例如:
[1,2] == [1,2] // false
[1,2] === [1,2] // false
” === ” 情况
从以上示例可以看出,不做类型转化,类型不同一定返回 fasle 。
总结:推荐使用 “===”, 只要类型不一致,直接返回 fasle;“==” 会造成类型转换再进行比较, 不严谨。