通常在以下語句結構中需要判斷真假
- if分支語句
- while循環語句
- for里的第二個語句
如
if (boo) { // do something } while (boo) { // do something }
JavaScript中有 6 個值為“假”,這六個值是
- false
- null
- undefined
- 0
- '' (空字符串)
- NaN
這里面 false 本身是布爾類型,其它 5 個則不是。
除了這 6 個外,其它均為“真” ,包括對象、數組、正則、函數等。注意 '0'、'null'、'false'、{}、[]也都是真值 。
雖然這六個值都為“假”,它們之間並非都相等
console.log( false == null ) // false console.log( false == undefined ) // false console.log( false == 0 ) // true console.log( false == '' ) // true console.log( false == NaN ) // false console.log( null == undefined ) // true console.log( null == 0 ) // false console.log( null == '' ) // false console.log( null == NaN ) // false console.log( undefined == 0) // false console.log( undefined == '') // false console.log( undefined == NaN) // false console.log( 0 == '' ) // true console.log( 0 == NaN ) // false
對於“==”,以上得出下列結論
- false 除了和自身比較為 true 外,和 0,"" 比較也為 true
- null 只和 undefined 比較時為 true, 反過來 undefined 也僅和 null 比較為 true,沒有第二個
- 0 除了和 false 比較為 true,還有空字符串 ''" 和空數組 []
- 空字符串 '' 除了和 false 比較為 true,還有一個數字 0
當然,對於這一切,查看下規范是最踏實的,ES里的ToBoolean闡述了所有情形
相關: