JS的邏輯判斷值

導語

咱們常常在作邏輯斷定時會根據斷定值的布爾類型來區分操做,即若是是··則··,否則則··的邏輯語境,但因爲Js的弱類型特性,它能夠利用不一樣類型的值來替代布爾值。如:code

if(!false){}, 
if(!""){},
if(!undefined){},
if(!null){},
if(!0){}

效果相同。
可是,這裏面又有哪些陷阱呢?類型轉換

這些值是否都相等

這些值中co

0 == false    //true
"" == false   //true
"" == 0       //true

false == undefined   //false
false == null        //false
null == undefined    //true

從上面咱們能夠看出,雖然 0/false/「」/null/undefined 能夠充當相同的布爾角色,可是它們卻不能在值上相等。只有 0,false,""值相等,undefined與null值相等,其餘不相等。block

爲何會這樣?

這裏在JS運行時的認定機制我也不是特別清楚,我大概知道Js在這裏作了一些不嚴謹的類型轉換,全部的值都會被轉換爲兩個值 : false 與true,再執行代碼。undefined

備註

因爲if語句常常用到,這幾種狀況仍是記下來比較好。

相關文章
相關標籤/搜索