【发布时间】:2014-07-11 07:10:14
【问题描述】:
代码如下:
<input type="number" value="0" id="input">
<script>
if (document.getElementById('input').value == 0) {
alert('Hello, world!');
}
</script>
这是 JSLint 错误:
预期为“===”,但看到的是“==”。
但是当我听取建议并将== 更改为=== 时,警报停止出现。
【问题讨论】:
-
然后比较一个字符串:
=== "0",因为这就是.value返回的内容。或者先将值转换为数字。始终使用严格的比较(例外:比较null并知道自己在做什么)。 -
"始终使用严格比较" 我知道这是一种很好的做法,但是在我的演示中
==有什么问题吗?如果我保持原样,它会导致任何问题吗? -
我同意,在这种情况下,类型转换实际上可能有用且无害。然而,保持一致也很好。但是想象一下如果用户提供非数字输入会发生什么(这可能取决于浏览器)。该值将转换为不等于 0 的
NaN。这会是预期的行为吗? -
"想象一下如果用户提供非数字输入会发生什么" 好点!附注:我是否正确地假设
input.value == '0'比input.value == 0快,因为第一个不需要转换?
标签: javascript html jslint