是true還是false呢?


古來聖賢皆寂寞 惟有【努】者留其名 ---【努】原文:飲  

先總結一個小知識點:0、null、NaN、undefined、"" 轉成布爾值為false 其他則一律返回true

1、首先明白一點:初始化后的數組,即使是空數組,也是一個object 當然非空數組肯定是一個object

  console.log(typeof [])//object
  console.log(typeof(new Array()))//object
2、既然是對象,用於判斷條件就會轉成true
 if([]){
    console.log(1)//1 可以打印出來
  }
3、但是將[]與布爾值比較卻是false
  []==false //true
  Boolean([])//true
4、但是將空數組轉成Boolean卻是true,既然是true 為什么[ ]==false
接着往下看:
 Number([])//0
 0==false
總結:這說明一個問題,當空數組與布爾值進行比較時,是將==兩邊先轉成Number在進行比較,這樣可以解釋的通了
所以,當空數組作為判斷條件時,相當於true。當空數組與布爾值直接比較時,相當於false。
6、但是還有一個理解不了的問題,看下面
 [1]==false//false ,按照上邊的結論 [1] 轉成Number 結果是1轉成布爾值是true 沒錯,但是下面有個問題
   new Array(2)==false//false 也沒問題
  new Array(1)==false//true 可是new Array(1)是卻是true,,
 //望大神解答?
7、接着還有一小個問題
[]==[] //false
[]==![]//true
明明是兩空數組為什么不相等呢?
原因:是數組是有new Array() 創建出來的,兩個數組即使值相等,它也是new Array()創建出來的兩個實例對象,自然不會相等
8、直接拿數值與布爾值比較
  console.log(0==true)//false
  console.log(1==true)//true
console.log(1==false)//false console.log(
2==true)//false console.log(2==false)//false console.log("------------------") console.log(Boolean(0))//false console.log(Boolean(2))//true console.log(Boolean(1))//true
結論:①直接拿數值與布爾值進行比較,0是false,1是true,其他的數字直接與布爾值比較,無論比較2==false或2==true 結果都是false
   ②將數值轉成布爾值只有0是false,其他都是true

 


免責聲明!

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



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