【问题标题】:Comparison with 0 and JSLint error与 0 和 JSLint 错误比较
【发布时间】:2014-07-11 07:10:14
【问题描述】:

代码如下:

<input type="number" value="0" id="input">
<script>
  if (document.getElementById('input').value == 0) {
    alert('Hello, world!');
  }
</script>

DEMO

这是 JSLint 错误:

预期为“===”,但看到的是“==”。

但是当我听取建议并将== 更改为=== 时,警报停止出现。

【问题讨论】:

  • 然后比较一个字符串:=== "0",因为这就是.value 返回的内容。或者先将值转换为数字。始终使用严格的比较(例外:比较null 并知道自己在做什么)。
  • "始终使用严格比较" 我知道这是一种很好的做法,但是在我的演示中== 有什么问题吗?如果我保持原样,它会导致任何问题吗?
  • 我同意,在这种情况下,类型转换实际上可能有用且无害。然而,保持一致也很好。但是想象一下如果用户提供非数字输入会发生什么(这可能取决于浏览器)。该值将转换为不等于 0 的 NaN。这会是预期的行为吗?
  • "想象一下如果用户提供非数字输入会发生什么" 好点!附注:我是否正确地假设 input.value == '0'input.value == 0 快,因为第一个不需要转换?

标签: javascript html jslint


【解决方案1】:

value 返回字符串。您需要将其转换为适当的格式。

  1. 使用parseFloat() 表示浮点数
  2. 使用parseInt(string,radix)整数进行运算。

使用

if (parseInt(document.getElementById('input').value, 10) === 0) { //Used parse int for integer

if (document.getElementById('input').value === "0") { //String comparison

【讨论】:

  • 由于它是一个数字输入,我们可以假设该值将始终是数字(或者至少应该是!)并且可以使用Number(value)+value 来处理整数和浮点数。
猜你喜欢
  • 2011-10-13
  • 1970-01-01
  • 1970-01-01
  • 2017-01-24
  • 2016-05-11
  • 1970-01-01
  • 1970-01-01
  • 2020-09-07
  • 2023-04-03
相关资源
最近更新 更多