Jshint对这个表达不满意:
var amount = $('.some-input').val()
// Check for NaN or <= 0
if (!(+amount > 0)) {
...
}
它声称混淆使用!。有没有办法在不添加太多代码的情况下重写表达式?
答案 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)) {
质量明智,在我看来,最重要的是你已经添加的小评论。