== 在表達式兩邊的數據類型不一致時,會隱式轉換為相同數據類型,然后對值進行比較。
=== 不會進行類型轉換,在比較時除了對值進行比較以外,還比較兩邊的數據類型。
另外,數值是null,"",undefined,Nan的時候,返回的也是false.有時候判斷的時候沒必要一個個列舉出來,一行代碼解決的事情,就不要寫兩行。
console.log(Boolean(null)); //false
console.log(Boolean("")); //false
console.log(Boolean(undefined)); //false
console.log(Boolean(NaN)); //false
console.log(Boolean(1==1)); //true
console.log(Boolean(1=="1")); //true
console.log(Boolean(1===1)); //true
console.log(Boolean(1==="1")); //false
再說說,null、NaN和undefined的區別.還從下面運行的代碼看起。
var a1; var a2 = true; var a3 = 1; var a4 = "a"; var a5 = new Object(); var a6 = null; var a7 = NaN; var a8 = undefined; console.log(typeof(a)); // "undefined" console.log(typeof(a1)); // "undefined" console.log(typeof(a2)); // "boolean" console.log(typeof(a3)); // "number" console.log(typeof(a4)); // "string" console.log(typeof(a5)); // "object" console.log(typeof(a6)); // "object" console.log(typeof(a7)); // "number" console.log(typeof(a8)); // "undefined" console.log(Boolean(a1 == a6)); //true console.log(Boolean(a1 == a7)); //false console.log(Boolean(a6 == a7)); //false console.log(Boolean(a7 == a7)); //false
可以看出未定義的值和定義未賦值的為undefined,null是一種特殊的object,NaN是一種特殊的number。
undefined與null是相等;NaN與任何值都不相等,與自己也不相等。