JavaScript中什麼值是假值

青灯夜游
發布: 2021-07-22 09:52:09
原創
2660 人瀏覽過

在JavaScript中,false、0和其他形式的數字等的零(“-0”、“ 0”、“0.0”和“0x0”)、null、undefined、NaN、“document.all 」、「[]」、「{}」、「""」(空字串)等值都是假值。

JavaScript中什麼值是假值

本教學操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。

JavaScript中的假值

  • #false
  • ##0和其他形式的數字等的零-0 00.00x0(信貸RBT為十六進位形式)
    - `」“,'' 和```-長度的字串0
  • #null
  • undefined
  • NaN
  • document.all (僅在HTML瀏覽器中)這是一個奇怪的。

    document.all是假對象,帶有typeof as undefined。它是IE11之前的IE中的Microsoft專有功能,並作為「蓄意違反JavaScript規範」而添加到HTML規範中,因此為IE編寫的網站在嘗試訪問時不會中斷document.all.something。這是虛假的,因為它if (document.all)曾經是在條件註解之前檢測IE的流行方法。請參閱為什麼document.all虛假?詳情「 Falsey」僅表示JavaScript的內部
    ToBoolean函數return falseToBooleanunderlies !value,value ? ...: …;和if (value)。這是其官方規範(2018年工作草案)(自1997年第一個ECMAscript規範以來唯一的變化就是添加了ES6的Symbols,它們始終是真實的):

  • # []

  • {}

  • ""(空字串)


#與==(寬鬆平等)的比較

值得一談的是falsy值與的鬆散比較

==,這會使用ToNumber()並可能由於潛在的差異而造成混淆。它們有效地分為三類:

  • false, 0, -0, "", '' 彼此配對==
  • 例如
  • false == ""'' == 0因此4/2 - 2 == 'some string'.slice(11);
  • null, undefined==
  • #例如,n
  • ull == undefined但是undefined != false
  • 這也是值得一提的是,雖然
  • typeof null回報'object',null是不是一個對象,這是一個長期的錯誤/怪癖這是不固定的,以保持相容性。它不是一個真正的對象,並且對像是真實的(document.all當在HTML中實現Javascript時會發生“惡意違反” )
  • NaN 不匹配任何東西,用
  • =====,甚至沒有自己例如
    NaN != NaNNaN !== NaNNaN != falseNaN != null
  • 對於「嚴格相等」(
  • ===),沒有這樣的分組。只有false === false
這就是為什麼許多開發人員和許多樣式指南(例如standardjs)偏愛

===且幾乎從不使用的原因之一==# 。

真正的價值觀== false

「 Truthy」只表示JavaScript的內部

ToBoolean函數return true。 Javascript的應用怪癖要知道的(和另一個很好的理由,更喜歡=====):這是可能的值是truthy(ToBoolean 回報true),而且還== false

你可能會認為這

if (value && value == false) alert('Huh?')是不可能發生的邏輯上的可能性,但對於以下情況,它將是可能的:

  • "0"'0'-它們是非空字串,這是正確的,但Javascript會將= =數字與等效字串相符(例如42 == "42")。因為0 == false,如果 "0" == 0"0" == false
  • new Number(0)並且new Boolean(false)-它們是真實的對象,但是==看到它們的值which == false
  • 0 .toExponential(); -數值等於的物件0
  • #任何類似的建構都會為你提供虛假的值,並包裝在真實的類型中
  • [][[]][0](感謝cloudfeet對JavaScript的平等錶鍊結)

一些更真實的價值

這些只是有些人可能期望是虛假的價值觀,但實際上是真實的。

  • -1 和所有非零負數
  • ' '" ""false"'null'… 所有非空字串,包括只是空格字串
  • #來自的任何內容typeof,總是傳回非空字串,例如:

  • typeof null'object' 由於長期存在的錯誤/怪癖而傳回字串)

  • typeof undefined(傳回一個字串'undefined'
  • 任何物件(document.all瀏覽器中的「惡意違反」除外;請記住,null儘管有typeof其他建議,但這實際上不是對象)。包含:

  • {}

  • #[]
  • ##function( ){}() => {}(任何功能,包括空白功能)
  • Error以及Error
  • 任何正規表示式
  • new(包括new Number(0)new Boolean(false))創建的任何內容
  • 任何符號

  • true,1,"1"[1]回報true相比彼此==
【推薦學習:

javascript進階教學

以上是JavaScript中什麼值是假值的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!