在JavaScript 中,在邏輯上下文中對值進行求值,例如if 語句或布林比較-可能會產生意想不到的結果。此行為是由於 JavaScript 的型別強制機製造成的。
JavaScript 鬆散地鍵入其值,當在邏輯上下文中使用字串或數字值時,它會經歷類型強制以將其轉換為布林值。在此轉換中,非空字串和非零數字的計算結果為 true,而空字串和零數字的計算結果為 false。
因此,當您使用== 或=== 比較「0」與false 時,它會傳回true,因為類型強制將「0」(非空字串)和false(類似零的值)轉換為true。
但是,當使用 if 語句時,僅對「0」進行計算為真。這是因為 if 語句內部使用強制布林值,該值對於非空字串傳回 true。
為了避免任何歧義,建議在比較原始值時使用嚴格相等運算符 ===,如它執行比較而不進行類型強制。這可以確保在必要時將“0”正確地評估為 false。
請參閱隨附的表格,以了解 JavaScript 對於各種資料類型的 true/falsy 行為的簡明表示。請記住,為了真正的相等比較,請始終選擇 ===。
以上是為什麼「0」在 if 語句中計算結果為 True,但在比較中計算結果為 False?的詳細內容。更多資訊請關注PHP中文網其他相關文章!