前幾天在編寫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]逛逛