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

為什麼「0」在 if 語句中計算結果為 True,但在比較中計算結果為 False?

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

Why Does

理解JavaScript 的怪癖:為什麼「0」在if 語句中為False 但不是False

在JavaScript 中,在邏輯上下文中對值進行求值,例如if 語句或布林比較-可能會產生意想不到的結果。此行為是由於 JavaScript 的型別強制轉換機製造成的。

JavaScript 鬆散地鍵入其值,當在邏輯上下文中使用字串或數字值時,它會經歷類型強制轉換以將其轉換為布林值。在此轉換中,非空字串和非零數字的計算結果為 true,而空字串和零數字的計算結果為 false。

因此,當您使用== 或=== 比較“0”與false 時,它會傳回true,因為類型強制將“0”(非空字串)和false(類似零的值)都轉換為true。

但是,使用 if 語句時,僅對「0」求值到 真的。這是因為 if 語句內部使用強制布林值,該值對於非空字串傳回 true。

為了避免任何歧義,建議在比較原始值時使用嚴格相等運算子 ===,如它執行比較而不進行類型強制。這確保了必要時“0”被正確地評估為假。

請參閱所附表格,以了解 JavaScript 對各種資料類型的 true/falsy 行為的簡潔表示。請記住,對於真正的相等比較,請始終選擇 ===.

最新教學 更多>

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

Copyright© 2022 湘ICP备2022001581号-3