if ( ( ( number - 0 ) | 0 ) !== number - 0 ){ // 输入购买数量是否为正整数
nextBtn.disabled = true;
nextBtn.innerHTML = '请输入正确的购买数量';
return;
}
书上看到这样的代码 ( number - 0 ) | 0 ) !== number - 0
负数 或 0 还不是负数吗?
是不是写错了
如果写错了 按这本书的写法可以怎么写呢?
请大佬帮忙!谢谢了
if ( ( ( number - 0 ) | 0 ) !== number - 0 ){ // 输入购买数量是否为正整数
nextBtn.disabled = true;
nextBtn.innerHTML = '请输入正确的购买数量';
return;
}
书上看到这样的代码 ( number - 0 ) | 0 ) !== number - 0
负数 或 0 还不是负数吗?
是不是写错了
如果写错了 按这本书的写法可以怎么写呢?
请大佬帮忙!谢谢了
正整数,其实很简单啊,只需要三步 if ,一,它不是非数字 isNaN ,二,它是整数,用 取整处理后对比是否一样等值,如果是则是整数,否则非整数,三,它不是负数,即比 0 大。就是这样了。当然,如果你要简洁的写法,可以研究找找。
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
原回答: 只是为了判断number为正整数吗?
number > 0 && Number.isInteger(number)
根据作者意图做出解释修正:
你这个判断的关键在那个按位或操作符上,如果number是整数的话,比如 10, 那么
10 | 0 == 10
, 但是 如果是小数的话,或出来的结果也是整数10.1 | 0 == 10
。同时有number - 0 操作,那么如果number == 'abc'这样的字符串number - 0 == NaN
这时候再按位与为NaN | 0 == 0
就避免了报错。回到你的条件,如果number是整数,那么条件不成立,也就不用提示用户再输入正确的数量,如果number是小数,那么条件成立,提示用户输入正确的数量。这个条件不会判断正负,只关心是不是整数。如果number 是 '123'这样的字符串,条件不成立, 如果是 'abc' 这样的字符串,条件成立。
结论: 书上没写错。这个条件会在用户输入小数,非数字的字符串时成立。
如果非要判断>0的话,可以这样写