在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