布爾類型原始值包括true
和false
。下面的操作符產(chǎn)生布爾值:
&&
(與),
(或)!
(非)=== !== == !=
> >= < <=
每當(dāng)JavaScript希望一個(gè)布爾值時(shí)(例如:if
語句的條件),可以使用任何值。它將被理解(轉(zhuǎn)換)為true
或false
。下面的值被理解為false
:
undefined
, null
false
-0
, NaN
‘’
所有其他值被認(rèn)為true。被理解為false的值稱為假值(falsy
),被理解為true的值稱為真值(truthy
)??梢允褂肂oolean作為函數(shù),測試值被理解為什么。
> Boolean(undefined)
false
> Boolean(0)
false
> Boolean(3)
true
JavaScript中的二元邏輯運(yùn)算符是短路運(yùn)算——如果第一個(gè)操作數(shù)可以確定結(jié)果,第二個(gè)操作數(shù)將不被驗(yàn)證(運(yùn)算)。例如,在下面的代碼中,函數(shù)foo()
永遠(yuǎn)不會被調(diào)用。
false && foo()
true || foo()
此外,二元邏輯運(yùn)算符會返回操作數(shù)中的一個(gè)——可能是一個(gè)布爾值,也可能不是。一張真值表用來決定返回哪個(gè)值:
> NaN && 'abc'
NaN
> 123 && 'abc'
'abc'
> 'abc' || 123
'abc'
> '' || 123
123
在JavaScript中檢測相等,你可以使用嚴(yán)格相等(===
)和嚴(yán)格不等(!==
)?;蛘吣阋部梢允褂梅菄?yán)格相等(==
)和非嚴(yán)格不等(!=
)。經(jīng)驗(yàn)規(guī)則:總是用嚴(yán)格運(yùn)算符,假裝非嚴(yán)格運(yùn)算符不存在。嚴(yán)格相等更安全。
更多建議: