JavaScript 等式難題:「0」為假,但用if 測試時卻為真
JavaScript 的等式運算子可能會導致意外結果,如下列程式碼所示:
console.log("0" == false); // true console.log(false == "0"); // true
此程式碼表示字串「0」相當於布林值false。然而,儘管條件為“0”,以下程式碼仍印出“ha”:
if ("0") console.log("ha"); // ha
為什麼會發生這種情況?
要理解這種行為,我們需要理解 JavaScript 的真值和假值。在 JavaScript 中,以下值是 false:
false 0 "" null undefined NaN
所有其他值都是 true。
在程式碼片段的前兩行中,相等運算子 (==) 執行類型強制轉換將字串「0」與布林值 false 進行比較。由於「0」是一個假值,所以它被認為等於 false。
但是,第三行程式碼中的 if 語句使用了嚴格相等(===),它只考慮相同類型的值一樣。由於「0」是字串,而 false 是布林值,因此條件計算結果為 false。
為避免混淆,建議在 JavaScript 中比較值時使用嚴格相等 (===)。以下修改後的程式碼將列印「nothing」:
if ("0" === false) console.log("ha"); // nothing
透過理解相等 (==) 和嚴格相等 (===) 之間的區別,您可以編寫準確比較值的 JavaScript 程式碼。
以上是為什麼「0」等於 False,但在 JavaScript 中用 if 測試卻是 True?的詳細內容。更多資訊請關注PHP中文網其他相關文章!