检查NaN或< = 0

时间:2013-06-04 11:07:53

标签: javascript

Jshint对这个表达不满意:

 var amount = $('.some-input').val()
 // Check for NaN or <= 0
 if (!(+amount > 0)) {
    ...
 }

它声称混淆使用!。有没有办法在不添加太多代码的情况下重写表达式?

2 个答案:

答案 0 :(得分:6)

没有否定的等价物是:

if (amount <= 0 || isNaN(amount)) {

所以,不是说“不大于”,而是说“小于或等于”。此外,并非所有人都知道NaN无法与数字进行真正比较(即始终返回false),因此明确的测试可以使此表达式更易于阅读和理解。

显然人类发现否定更难以理解,我不会说它没有真相。

答案 1 :(得分:2)

你可以写

if (amount > 0 === false) {

在此比较中,字符串会自动转换为数字,并且无法正确解析为数字的任何字符串将转换为NaN,而不是>0。当jshint看到=== false代替方便的!时,jshint似乎很高兴。

但真正的解决方案似乎使用jshint,这与此无关。此工具不允许您使用JavaScript的强大功能。

如果您决定放弃jshint,我仍然建议您简化一下您的测试

if (!(amount > 0)) {

质量明智,在我看来,最重要的是你已经添加的小评论。