零否定会产生错误

时间:2012-03-16 12:55:50

标签: javascript boolean zero

我遇到了一个问题,即在我的JavaScript代码中,否定零会产生 false 。 我已经简化了代码来演示下面给出的问题。

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

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

为什么否定零成为 false

4 个答案:

答案 0 :(得分:4)

字符串"0"为“true”,否定它为false

如果你想要一个数字,你应该解析它:

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

答案 1 :(得分:1)

因为那不是数字零,所以它是一个字符串,其中包含字符“0”。当被视为布尔值时,所有非空字符串,无论其中包含哪些字符,都是true

答案 2 :(得分:1)

你否定了字符串"0"。除非是空字符串,否则任何字符串都会变为false

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

最后一个表达式为true,因为+运算符会将字符串转换为数字。

输入值始终是一个字符串,这在语义上也是有意义的,因为它是用户输入的字符组合。如果你想解释是一个数字,你必须自己将它转换成一个。

答案 3 :(得分:1)

尝试这样:

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

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