首先来说明一下 "==" 和 "===" 所比较的是什么Js " == " 和 " === "的区别
" == " : 等同运算符,只比较值是否相等
" === " : 全等运算符,既比较值,也比较数据类型是否相等
下面先来做一些 基础的测试 :
这边要注意 :
在js中默认 true == 1,false == 0;
var a = true;
var b = 1;
var c = 2;
console.log(a == b); /true
console.log(a == c); /false
console.log(a === b); /false -- 数据类型不相等
console.log(b == c); /false -- 类型相等 值不相等
Js中还有一些特殊的关键字 : null , NaN , undefined , 0 那么他们的计算是怎么样的呢?
1 . 首先我们要知道他们的数据类型
2 . 然后进行值与类型的相等比对
var a = null , b = NaN;
var c = undefined , d = 0;
/1. 获取数据类型
console.log(typeof null ) / object
console.log(typeof NaN) / number
console.log(typeof undefined) / undefined
/2. 进行对比 -- 其他的就不放出来了 因为全部为 false
console.log(a == c); / true
console.log(a === c); / false
看到这里是不是很好奇 ?为什么 nall 会等于 undefined
我们可以从Javascript规范中找到答案:
规范中提到, 要比较相等性之前,不能将 null 和 undefined 转换成其他任何值,并且规定null 和 undefined 是相等的。
null 和 undefined都代表着无效的值。