为了账号安全,请及时绑定邮箱和手机立即绑定

js 判断一个数是否为正整数?

js 判断一个数是否为正整数?

守着星空守着你 2019-03-21 22:15:47
if ( ( ( number - 0 ) | 0 ) !== number - 0 ){ // 输入购买数量是否为正整数nextBtn.disabled = true;nextBtn.innerHTML = '请输入正确的购买数量';return;}书上看到这样的代码 ( number - 0 ) | 0 ) !== number - 0 负数 或 0 还不是负数吗?是不是写错了如果写错了 按这本书的写法可以怎么写呢?请大佬帮忙!谢谢了
查看完整描述

4 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

原回答: 只是为了判断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的话,可以这样写

if ((( number - 0 ) | 0 ) !== (number - 0) && (( number - 0 ) | 0 ) <= 0)


查看完整回答
反对 回复 2019-04-08
?
慕标5832272

TA贡献1966条经验 获得超4个赞

~~number === number


查看完整回答
反对 回复 2019-04-08
  • 4 回答
  • 0 关注
  • 1913 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信