2012-03-16 67 views
3

我得到了一個問題,否定零產生false在我的JavaScript代碼中。 我簡化了代碼來演示下面給出的問題。零的否定產生虛假

<input id="iid" value="0" /> 

<script type="text/javascript"> 
    zero = document.getElementById('iid').value; 
    alert((!zero ? 'true' : 'false')); // alert message is "false". 
</script> 

爲什麼零否定成爲

回答

1

你在否定字符串"0"

!0  true 
!"0"  false 
!""  true 
!+"0" true 

最後一個表達式是true,因爲操作者+轉換字符串轉換成數:否定除空字符串時任何字符串變成false

輸入值始終是一個字符串,這在語義上也有意義,因爲它是用戶輸入的字符的組合。如果你想解釋爲一個數字,你必須自己將其轉換成一個。

4

字符串"0"是「true」,否定它是false

如果你想一個數字,你應該分析它:

var valueAsNumber = parseInt(document.getElementById('iid').value, 10); 
1

因爲這不是零,這是一個在它的字符「0」。所有非空字符串,無論其中包含什麼字符,當被視爲布爾值時,都是true

1

嘗試這樣的:

<input id="iid" value="0" /> 

<script type="text/javascript"> 
    zero = Number(document.getElementById('iid').value); 
    alert((!zero ? 'true' : 'false')); 
</script> 
+0

太好了!幫助了我這個提示。 – 2012-03-16 13:03:34