」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 為什麼 JavaScript 中的「0」在比較中為 False,而在「if」語句中為 True?

為什麼 JavaScript 中的「0」在比較中為 False,而在「if」語句中為 True?

發佈於2024-11-07
瀏覽:115

Why Does

揭開JavaScript 的悖論:為什麼「0」在比較中為假,但在If 語句中為假

在JavaScript中,原語" 的行為0」給開發者帶來了困惑。雖然諸如“==”之類的邏輯運算符將“0”等同於假,但“0”在“if”條件下表現為真。

比較悖論

代碼下面演示了比較悖論:

"0" == false // true
false == "0" // true

在這種情況下,JavaScript 根據其「true」和「falsy」值將「0」強制為 false。像“0”、“NaN”、“null”和 undefined 這樣的值被認為是假值,而其他值則被認為是真值。

If 語句異常

但是,情況當「if」語句中使用「0」時,會變得令人費解:

if ("0") console.log("ha") // ha

儘管被強制與false 進行比較時,「0」在「if」條件下計算結果為true。這是因為 JavaScript 中的「if」語句將所有非空字串(包括「0」)視為真實。

真實性表

為了瞭解這種行為,我們可以參考JavaScript真值表。他們根據比較(==) 和「if」語句(真實)條件中的真值/假值狀態對值進行分類:

]
比較If 語句
True/Truthytruetrue
假/假
"0"(假)true

結論

JavaScript中「0」的悖論源自於對比較真實性的不同解釋(= =) 和“if”語句(真實)。這是一個微妙但至關重要的區別,開發人員應該意識到這一點,以避免意外的結果。作為最佳實踐,建議在比較期間使用嚴格相等 (===) 以確保精確評估。

最新教學 更多>
  • Python垃圾收集器如何自動管理記憶體?
    Python垃圾收集器如何自動管理記憶體?
    Python 垃圾收集器文件Python 垃圾收集器是一個記憶體管理系統,可以自動釋放程式不再使用的記憶體。這有助於透過防止記憶體洩漏並確保程式不會耗盡記憶體來提高效能。 垃圾收集器的工作過程分為兩步:引用計數: 解釋器追蹤每個物件的引用數量。當引用計數達到零時,該物件被認為不可達,並添加到要刪除的...
    程式設計 發佈於2024-11-07
  • PHP 如何有效率地處理大整數?
    PHP 如何有效率地處理大整數?
    PHP 可以處理大整數嗎? PHP 可能沒有明確的「BigInteger」類,但它提供了幾種處理大整數的方法整數。 使用 BC 數學函數PHP 提供BC 數學函數,如用於整數算術的 bcadd() 和 bcsub()。然而,這種方法對於大量計算來說可能會很慢。 使用 GMP 擴展GMP(GNU 多精...
    程式設計 發佈於2024-11-07
  • 如何使用 Python 字串匹配驗證 IP 位址輸入?
    如何使用 Python 字串匹配驗證 IP 位址輸入?
    使用 Python 驗證 IP 位址輸入驗證使用者輸入的 IP 位址在各種應用中至關重要。本文將探討驗證以字串形式提供的 IP 位址合法性的最有效方法。 首選方法偏離解析,而是利用 Python 標準函式庫的套接字模組。透過利用 inet_aton(),我們可以確定輸入字串是否代表有效的 IP 位址...
    程式設計 發佈於2024-11-07
  • 那麼 Pull 請求如何再次發揮作用呢?螢幕顯示#3
    那麼 Pull 請求如何再次發揮作用呢?螢幕顯示#3
    在我之前的文章中,我談到了啟動一個基於開源 GenAI 的終端應用程式。本週的任務是為另一個用戶的專案貢獻一個新功能。由於我們必須與新人合作,所以我與 Lily 合作,她開發了一個應用程序,其代碼改進功能與我的類似,只是她的角色是老鼠! 有時間的話可以去看看她的專案老鼠助手。 她的程式碼是用 T...
    程式設計 發佈於2024-11-07
  • 為什麼 Go 中不能直接將 []string 轉換為 []interface{}?
    為什麼 Go 中不能直接將 []string 轉換為 []interface{}?
    為什麼將[]string 轉換為[]interface{} 會在Go 中引發編譯錯誤轉換字串切片([] string)考慮到它們共享切片特徵以及[]string 的每個元素都可以被視為一個接口,Go 中的接口切片([]interface{}) 似乎很簡單。然而,嘗試這種轉換時會出現編譯錯誤,讓程式設...
    程式設計 發佈於2024-11-07
  • 理解 Shadow DOM:封裝 Web 元件的關鍵
    理解 Shadow DOM:封裝 Web 元件的關鍵
    在現代 Web 開發中,創建可重複使用和可維護的元件至關重要。 Shadow DOM 是 Web 元件標準的一部分,在實現這一目標方面發揮著至關重要的作用。本文深入探討了 Shadow DOM 的概念、它的優點以及如何在您的專案中有效地使用它。 什麼是 Shadow DOM? Sh...
    程式設計 發佈於2024-11-07
  • 如何使用 Java 運行時解決輸出重定向問題?
    如何使用 Java 運行時解決輸出重定向問題?
    使用Runtime 的exec() 方法解決輸出重定向問題在Java 中,利用Runtime.getRuntime().exec() 運行指令可以擷取進程的輸出和錯誤流。但是,在需要輸出重定向的情況下,單獨使用此方法可能會無效。 問題:輸出未重定向當使用Runtime.getRuntime().ex...
    程式設計 發佈於2024-11-07
  • 如何使用 CSS 懸停效果從左到右填滿背景顏色?
    如何使用 CSS 懸停效果從左到右填滿背景顏色?
    使用CSS 從左到右填充背景顏色在CSS 中,您可以透過利用線性漸層和動畫背景定位來創造迷人的懸停效果。這種方法使您能夠在懸停時從左到右用新顏色填充元素的背景。 線性漸變和背景大小關鍵是使用由兩種顏色組成的線性漸變背景,並將背景大小設定為元素寬度的兩倍。這允許您在兩種顏色之間創建無縫過渡。 背景定位...
    程式設計 發佈於2024-11-07
  • GraalVM 本機映像中的記憶體管理
    GraalVM 本機映像中的記憶體管理
    内存管理是计算机软件开发的重要组成部分,负责应用程序中内存的有效分配、利用和释放。其重要性在于增强软件性能,保证系统稳定性。 垃圾收集 垃圾收集 (GC) 在 Java 和 Go 等当代编程语言中至关重要。它自动检测并回收未使用的内存,从而减轻开发人员手动管理内存的需要。 GC 的概...
    程式設計 發佈於2024-11-07
  • ## 在 C++ 中什麼時候應該使用參考作為函數參數?
    ## 在 C++ 中什麼時候應該使用參考作為函數參數?
    在 C 中傳遞參數:瞭解引用在 C 中,函數參數的行為由其型別決定。一個重要的區別是「按值傳遞」和「按引用傳遞」。 為什麼在函數參數中使用引用? 引用在函數參數中用於兩種情況主要原因:修改參數:引用允許函數修改值論證通過了。這意味著該函數可以進行呼叫者可見的更改。 避免物件複製: 透過引用傳遞大物件...
    程式設計 發佈於2024-11-07
  • 為什麼會出現“getaddrinfo 失敗”以及如何修復?
    為什麼會出現“getaddrinfo 失敗”以及如何修復?
    探索“getaddrinfo failed”錯誤名稱解析過程中發生錯誤“getaddrinfo failed”,其中主機名稱被翻譯轉換為IP 位址。它顯示所提供的主機名的解析有問題。 深入研究錯誤情境從提供的錯誤追蹤中,我們可以將原因追溯到套接字。 getaddrinfo(主機,連接埠)方法。當無法...
    程式設計 發佈於2024-11-07
  • 如何在單一命令列中運行多行命令?
    如何在單一命令列中運行多行命令?
    如何在一行命令列中執行多行語句使用Python的-c選項執行單行循環時,在循環之前導入模組會導致語法錯誤。這是因為Python解釋器將程式碼區塊視為單一語句。 要解決此問題,可以採用以下幾種方法:使用管道要克服語法錯誤,請使用echo 命令將程式碼區塊作為一系列輸入行重定向到Python:echo ...
    程式設計 發佈於2024-11-07
  • 如何在 PHP 中從 MySQL 遷移到 MySQLi?
    如何在 PHP 中從 MySQL 遷移到 MySQLi?
    從 MySQL 遷移到 MySQLi將網站從 MySQL 遷移到 MySQLi 需要修改 PHP 程式碼,但資料庫本身基本上不受影響。 MySQLi 是 MySQL 擴充功能的改進版本,提供增強的功能和安全性。 PHP 程式碼變更是的,您可以簡單地將 MySQLi 函數替換為 MySQL 函數。這裡...
    程式設計 發佈於2024-11-07
  • 如何在CSS中實現背景和子元素的不同透明度?
    如何在CSS中實現背景和子元素的不同透明度?
    理解 CSS 背景不透明度在 CSS 中,不透明度控制元素的透明度。當應用於容器時,它自然會影響背景及其子元素。 繼承問題要實現背景和子元素不同的不透明度, CSS 繼承帶來了挑戰。子元素從其父容器繼承不透明度,從而導致所提供範例中的背景和文字具有相同的不透明度。 實現所需不透明度的解決方案實現要達...
    程式設計 發佈於2024-11-07
  • 【個人網站】Next如何整合Notion資料庫
    【個人網站】Next如何整合Notion資料庫
    To integrate a Notion database into a Next.js project, you can use Notion as a content management system (CMS) and display its content on your website...
    程式設計 發佈於2024-11-07

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3