《Javascript中"= =“和”==="的区别》
"= =“是值相等,”==="是全等于(类型,值)
1."==" 是比较符号两边的值是否相等,不管数据类型
==:存在隐式转换规则:只要有一边是数值,就以数值运算
(1)eg:
console.log(1 == "1"); //true
在js中会将字符"1"转换成数值,然后进行比较
(2)eg:
console.log(1 == true); //true
在js中会将布尔值true转换成数值,然后进行与1进行比较
(3)eg:
console.log(null == undefined); //true
(4)eg:
console.log([1] == 1); //true
将数组1转换成数字1,进行比较
(5)如果一个是对象,另一 个是数值或字符串,把对象转换成基础类型的值再比较。
2."==="是比较符号两边的值和数据类型是否都相等
===:不存在隐式转换,严格相等,除了比较值,还要比较类型
(1)eg:
console.log(1 === "1"); //false
在"==="中属于严格比较,所以不存在隐式类型的转换
在代码执行过程中,先进行值的比较,1是否等于1,若等于在再判断类型,由于1是数值类型,而"1"是字符型,所以在比较时发现类型不同,返回为false
(2)eg:
console.log(1 === true); //false
由于1是数值类型,true是布尔类型,所以它们不相等
(3)eg:
console.log(null === undefined);
由于null是空类型,与undefined属于不同类型,所以返回为false
注意:
console.log(NaN === NaN);//false
console.log(NaN == NaN);//false
NaN 属性是代表非数字值的特殊值。该属性用于指示某个值不是数字,任何值与NaN比较都不相等,包括自身
例如:A是一个非数字类型,B也是一个非数字类型,但是A == B吗?显然不相等,那A===B更不相等。