我遇到了一个问题,即在我的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 ?
答案 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>