Jshint 对这个表达式不满意:
var amount = $('.some-input').val()
// Check for NaN or <= 0
if (!(+amount > 0)) {
...
}
它声称混淆使用!. 有没有办法在不添加太多代码的情况下重写表达式?
Jshint 对这个表达式不满意:
var amount = $('.some-input').val()
// Check for NaN or <= 0
if (!(+amount > 0)) {
...
}
它声称混淆使用!. 有没有办法在不添加太多代码的情况下重写表达式?
没有否定的等价物是:
if (amount <= 0 || isNaN(amount)) {
所以,不是说"Is not greater than",而是说"Is less than or equal"。此外,并不是每个人都知道NaN
不能真正与数字进行比较(即总是返回false
),因此显式测试可以使这个表达式更容易阅读和理解。
显然,人类发现否定更难理解,我不会说它没有道理。
你可以写
if (amount > 0 === false) {
在此比较中,字符串会自动转换为数字,并且任何无法正确解析为数字的字符串都会转换为NaN
is not >0
。而 jshint 似乎很高兴看到它=== false
代替了 便利!
。
但真正的解决方案似乎不使用 jshint,这在这里不相关。该工具不允许您使用 JavaScript 的强大功能。
如果您决定放弃 jshint,我仍然建议您将测试简化为
if (!(amount > 0)) {
质量方面,我认为这里最重要的是您已经添加的小评论。