簡體   English   中英

JavaScript 中的真假與真假有什么區別?

[英]What is the difference between truthy and falsy with true and false in JavaScript?

我對 JavaScript 中的一些概念有疑問,例如(truthy, true)(falsy, false)

我知道 1 的類型不true但問題是:為什么1 == true

ECMAScript 將 1 或 "ghsagh" 視為true主要原因是什么?

我也無法理解truthyfalsy的含義。

這種考慮有什么好處?!

JavaScript 喜歡盡可能隱式地將值轉換為其他類型。 因此,在比較布爾值與其他類型的變量時,JavaScript 使用與舊編程語言相同的邏輯。 表示空、空或零(例如 0 或“”)的值的計算結果為 false,而任何其他值(例如 1、5、-19、“ghsfsah”或其他有意義的內容)計算結果為 true。

它為什么這樣做? 一方面,它允許開發人員在檢查變量是否有內容時有一個小捷徑。 例如,如果用戶沒有在文本字段中輸入,我們可以輕松檢查字段是否為空並提示用戶。

if ( !textfield.value ) {
    alert( "Please enter something in the text box" );
}

如果您需要查看某些內容true還是false ,您可以使用===

JavaScript 在它需要的值類型方面非常靈活。 如果 JavaScript 需要一個布爾值,它會將您提供的任何值轉換為布爾值。

某些值(“真”值)轉換為真,而其他值(“假”值)轉換為假。

以下值轉換為 false,因此工作方式類似於 false:

  1. 不明確的
  2. 空值
  3. 0
  4. -0
  5. NaN
  6. "" // 空字符串

所有其他值,包括所有對象(和數組)都轉換為 true,並像 true 一樣工作。

例如,假設變量o包含一個對象或值null 您可以使用如下 if 語句顯式測試以查看 o 是否為非空:

if (o !== null){
....
}

嚴格不等於運算符!==onull進行比較,並評估為真或假。 但是您可以省略比較,而是依賴於null為假而對象為真這一事實:

if (o){
....
}

在第一種情況下,只有當o不為null才會執行 if 的主體。 因此,即使 o 設置為undefined ,代碼塊也會執行。

第二種情況不太嚴格:僅當o不為false或任何虛假值(例如nullundefined )時,它才會執行 if 的主體。 哪個 if 語句適合您的程序實際上取決於您期望分配給o 如果需要將null0和 "" 區分開來,則應使用顯式比較。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM