js 中 相等(==) 和恆等( === )的區別


== 在表達式兩邊的數據類型不一致時,會隱式轉換為相同數據類型,然后對值進行比較。

=== 不會進行類型轉換,在比較時除了對值進行比較以外,還比較兩邊的數據類型。

另外,數值是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與任何值都不相等,與自己也不相等。 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM