js布爾類型解釋以及類型轉換

這個問題的來源是,我的項目需求中出現了一個問題,是在判斷那女的是時候,後臺是根據0和1來判斷的,所以我再前端判斷的時候就出現問題了,!0的時候等於true了,所以仔細的去看了看關於這方面的東西,差缺不漏。

Boolean類型介紹:

  • 在boolean中有六種返回的是false:
  • Boolean(’’) //中間不要有空格,返回的是false;
  • Boolean(undefined) //返回的是false;
  • Boolean(Null) //返回的是false;
  • Boolean(0) //返回的是false;
  • Boolean(NAN)//返回的是false;
  • Boolean(flase) //返回的是false;
  • 在boolean中其他返回true:
  • Boolean(1) //返回的是true;
  • Boolean([]) // 返回的是true;
  • Boolean({}) // 返回的是true;
  • Boolean(Infinity) //返回的是true;
  • Boolean(‘任意字符串’) //返回的是true;
 總結:除了以上爲false的任意的非空字符串和任意數字,它的Boolean返回的是都是true。

Boolean類型的隱式轉換:

  • 在boolean與其他類型比較:
注意:當我們字符串和布爾類型的比較的時候,都會轉成Number再比較
  • console.log(0 == false) //0本來就是數字,false轉換爲數字就是0 ,所以返回的是true;
  • console.log(1 == true) // 1本來也是數組,true轉換爲數字的就是1,所以返回的是true;
  • console.log(‘0’ == false) // ‘0’這是字符串,那麼需要轉換成數字進行比較,轉換爲Number類型的時候就是0,而false轉換成Number類型也是0,所以返回的是true;
  • console.log(‘1’ == true) '1’這是字符串,那麼同上需要轉換成數字進行比較,轉換爲Number的時候就是1,而true轉換成數字類型的時候就是1,1==1所以返回的是true;
  • console.log(‘false’ == false) 這是字符串‘false’,轉換成數字是一個NaN,所以返回的是false(任意的字符與布爾類型的比較都是false);
  • console.log(‘true’ == true) 這是字符串‘true’,轉換成數字是一個NaN,所以返回的是false(任意的字符與布爾類型的比較都是true);
  • console.log([] == false) 這是一個空數組,轉換成數字是0,false轉換成數字是0,所以0 == 0 ,返回的值是true
  • console.log([] == true) 轉換成數字是0,true轉換成數字是1,所以轉換成數字0==1,返回值是false;
  • console.log({} == true) 這個一個空的對象,轉換成數字類型是NAN,NAN==1,所以返回false;
總結:數字0和1,字符串‘0’和‘1’轉換成Number類型的值,都是0和1,布爾類型的轉換成數字也是0和1,字符串除了'0'和‘1’外,轉換成數字都是NAN,所以沒有辦法比較,就是說false,而[]轉換成Number是0,所以也可以比較,空對象轉換成Number是NAN,所以沒有辦法比較。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章