天天看點

Javascript:if(0=='')條件為true (注意==和===的差別)

前幾天在編寫javascript腳本代碼時,發現if判斷語句:if(v=='')當v為0時,其結果竟然為true,如:

<script type="text/javascript"
>
if(0 == '') {
 document.write('我操,蛋疼<br/>');
}
if(0 == false) document.write('yes'); 
</script>
           

執行結果為:

[b]我操,蛋疼

yes[/b]

後面的if(0 == false) document.write('yes'); 是Ricki假設==在處理不同類型資料的比較時,先轉換為布爾類型後再進行比較的測試,後來看了Javascript的幫助文檔,發現假設是正确的。如(以下内容摘自幫助文檔):

[b]相等運算符 (==、!=) [/b]

如果兩表達式的類型不同,則試圖将它們[b]轉換為字元串、數字或 Boolean 量[/b]。

NaN 與包括其本身在内的任何值都不相等。

負零等于正零。

null 與 null 和 undefined 相等。

[b]相同的字元串、數值上相等的數字、相同的對象、相同的 Boolean 值或者(當類型不同時)能被強制轉化為上述情況之一,均被認為是相等的[/b]。

其他比較均被認為是不相等的。

[b]恒等運算符 (===、!==) [/b]

除了不進行類型轉換,并且類型必須相同以外,這些運算符與相等運算符的作用是一樣的。

如把上面的第一個==改為===,則結果為:

yes

有空,歡迎到[url=http://hongfanshu.blogbus.com/]紅番薯[/url]逛逛

繼續閱讀