JavaScript-Boolean數據類型及其比較

Boolean數據類型,即布爾數據類型,只有兩個值,分別是truefalseide

  • !: 一個歎號是取反,首先將值轉化爲布爾類型的,而後再取反

 

console.log(!3); // false -> 先把3轉化爲boolean 此時爲true, 而後再取反爲false
console.log(!0); // true -> 先把0轉化爲boolean 此時爲false,而後再取反爲true
  • !!: 將其餘的數據類型轉化爲boolean類型,至關於Boolean();

 

console.log(Boolean('derrick')); // true
    console.log(!!'derrick'); // true

數據類型轉化的規則:code

  1. 若是隻有一個值,判斷這個值是真仍是假,遵循:只有 0 NaN ''(空字符串) null undefined 這五個是假的(false),其他的都是真(true)。

 

console.log(!!0); // false
console.log(!!""); // false
console.log(!!undefined); // false
console.log(!!null); // false;
console.log(!!NaN); // false;
console.log(!![]); // true
  1. 若是是兩個值比較是否相等,遵循這個規則:
    val1 == val2 兩個值可能不是同一個數據類型的,若是是 == 比較的話,會進行默認的數據類型轉換。
  1. 對象 == 對象 -> 不一樣的對象永遠不相等

 

console.log([] == []); // false
    console.log(function(){} == function(){}); // false
  1. 對象 == 字符串 -> 先將字符串轉化爲字符串(調用toString的方法),而後在比較。

 

console.log([] == ''); 
// true -> [].toString() => '' -> '' == '' 爲true
  // [] 轉換爲字符串 ''
console.log({} == '');
// false -> {}.toString() => '[Object Object]' -> false
  // {} 轉換爲字符串 '[Object Object]'
  1. 對象 == 布爾類型 對象先轉化爲字符串(toString()),而後字符串再轉化爲數字(Number()),布爾類型也轉化爲數字(true是1 false是0),最後讓兩個數字比較。

 

console.log([] == false); // true
// [] -> [].String() 爲 '' -> Number('') 爲 0,
// false -> 轉爲數字0,故相等。
  1. 對象 == 數字 對象先轉化爲字符串(toString()),而後字符串再轉化爲數字(Number()),而後讓兩個數字比較。
  2. 數字 == 布爾 布爾轉化爲數字,而後兩個數字進行比較

 

console.log(2 == true); // false
  1. 數字 == 字符串 字符串轉化爲數字,而後兩個數字進行比較
  2. 字符串 == 布爾 都轉化爲數字而後進行比較
  3. null == undefined 結果是true
  4. null或者undefined 和其餘任何數據類型比較都不相等
  1. 除了 == 是比較,=== 也是比較,=== 比較時,是絕對比較。val1 === val2。 若是數據類型不同,則兩個比較確定不相等。

 

console.log(1 === "1"); // false
console.log(1 === true); // false
相關文章
相關標籤/搜索