1、===:称为等同符(严格运算符)。比较值和类型。
当两边值的类型相同时,直接比较值,若类型不相同,直接返回false;
2、==:称为等值符(相等运算符)。只比较值。
当等号两边的类型相同时,直接比较值是否相等,若不相同,则【先转化为类型相同的值】再进行比较;
3、undefined和null和自身严格相等
undefined === undefined //true
null === null //true
需要注意相等运算符'=='的缺点:
相等运算符隐藏的类型转换,会带来一些违反直觉的结果。
'' == '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
还有,==会在比较之前做一次类型转换,所以它可能会有副作用。(如果覆写某个对象的valueOf/toString的话)
建议尽量使用'==='来比较,以保万全。
另,知乎链接中有个人提到,难道==就一无是处吗?并不是。比如你想判断一个字符串看起来是不是空白的(由空白字符组成),可以这样写:
if (typeof str === "string" && str == false)
console.log("The string is full of white spaces!");
资料来源:
三个等号和两个等号的区别(“===”和“==”)
Javascript 中 == 和 === 区别是什么? - 知乎
网友评论