簡單的js代碼片段。爲什麼總是警惕無法理解條件執行流程
「結果爲空」
按我的理解,if
塊應該得到執行,因爲result!=""
是true
和警覺
「結果不空」。
<script>
var result = false;
if(result != "")
alert('result is not empty')
else
alert('result is empty')
</script>
簡單的js代碼片段。爲什麼總是警惕無法理解條件執行流程
「結果爲空」
按我的理解,if
塊應該得到執行,因爲result!=""
是true
和警覺
「結果不空」。
<script>
var result = false;
if(result != "")
alert('result is not empty')
else
alert('result is empty')
</script>
這是因爲!=
做了隱式類型轉換。如果你使用嚴格的版本,!==
,它會做你的期望。但鬆散版本!=
會將這兩個操作數轉換爲數字,並且""
和false
都會轉換爲0
,因此"" != false
爲false,因爲它最終(通過一系列卷積)爲0 != 0
。
此詳細被佈置在Abstract Equality Comparison算法在本說明書中:
我們可以從上面看到,如果我們用false
和""
展開,取出,然後:
false
到0
,並與0 != ""
""
轉換爲0
,然後再次啓動0 != 0
false
(因爲我們在做!=
,而算法是根據==
定義的)。謝謝@Crowder的詳細解答。保持。感謝您的鏈接。 – Keerthivasan
Javascript檢查truthy值。
false != ""
是假
false !== ""
是真實的,所以你可以嘗試一下。
因爲「」是一個虛假值。 – jalooc