在JavaScript中,false、0和其他形式的數字等的零(“-0”、“ 0”、“0.0”和“0x0”)、null、undefined、NaN、“document.all 」、「[]」、「{}」、「""」(空字串)等值都是假值。
本教學操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。
JavaScript中的假值
#false
和其他形式的數字等的零
-0、
0、
0.0和
0x0(信貸RBT為十六進位形式)
document.all是假對象,帶有
typeof as
undefined。它是IE11之前的IE中的Microsoft專有功能,並作為「蓄意違反JavaScript規範」而添加到HTML規範中,因此為IE編寫的網站在嘗試訪問時不會中斷document.all.something。這是虛假的,因為它
if (document.all)曾經是在條件註解之前檢測IE的流行方法。請參閱為什麼
document.all虛假?詳情
「 Falsey」僅表示JavaScript的內部
ToBoolean函數return
false。
ToBooleanunderlies
!value,value ? ...: …;和if (value)。這是其官方規範(2018年工作草案)(自1997年第一個ECMAscript規範以來唯一的變化就是添加了ES6的Symbols,它們始終是真實的):
#與==(寬鬆平等)的比較
值得一談的是falsy值與的鬆散比較==,這會使用
ToNumber()並可能由於潛在的差異而造成混淆。它們有效地分為三類:
彼此配對
==
,
'' == 0因此
4/2 - 2 == 'some string'.slice(11);
與
==
但是
undefined != false
回報
'object',null是不是一個對象,這是一個長期的錯誤/怪癖這是不固定的,以保持相容性。它不是一個真正的對象,並且對像是真實的(
document.all當在HTML中實現Javascript時會發生“惡意違反” )
或
===,甚至沒有自己
例如,
NaN !== NaN,
NaN !=
false,
NaN != null
),沒有這樣的分組。只有
false === false。
===且幾乎從不使用的原因之一
==# 。
真正的價值觀== false
「 Truthy」只表示JavaScript的內部ToBoolean函數return
true。 Javascript的應用怪癖要知道的(和另一個很好的理由,更喜歡
===了
==):這是可能的值是truthy(
ToBoolean 回報true),而且還
== false。
if (value && value == false) alert('Huh?')是不可能發生的邏輯上的可能性,但對於以下情況,它將是可能的:
和
'0'-它們是非空字串,這是正確的,但Javascript會將= =數字與等效字串相符(例如
42 == "42")。因為
0 == false,如果
"0" == 0,
"0" == false。
並且
new Boolean(false)-它們是真實的對象,但是==看到它們的值
which == false。
; -數值等於的物件0
,
[[]]和
[0](感謝cloudfeet對JavaScript的平等錶鍊結)
一些更真實的價值
這些只是有些人可能期望是虛假的價值觀,但實際上是真實的。-1
和所有非零負數' '
," "
,"false"
,'null'
… 所有非空字串,包括只是空格字串#來自的任何內容typeof,總是傳回非空字串,例如:
typeof null
('object'
由於長期存在的錯誤/怪癖而傳回字串)
typeof undefined
(傳回一個字串'undefined'
)任何物件(document.all
瀏覽器中的「惡意違反」除外;請記住,null儘管有typeof其他建議,但這實際上不是對象)。包含:
{}
#[]
或
() => {}(任何功能,包括空白功能)
以及
Error
(包括
new Number(0)和
new Boolean(false))創建的任何內容
和
[1]回報
true相比彼此
==。
javascript進階教學】
以上是JavaScript中什麼值是假值的詳細內容。更多資訊請關注PHP中文網其他相關文章!