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

if ( ( ( number - 0 ) | 0 ) !== number - 0 ){ // 输入购买数量是否为正整数


nextBtn.disabled = true;

nextBtn.innerHTML = '请输入正确的购买数量';

return;

}

书上看到这样的代码 ( number - 0 ) | 0 ) !== number - 0 

负数 或 0 还不是负数吗?

是不是写错了


如果写错了 按这本书的写法可以怎么写呢?


请大佬帮忙!谢谢了


守着星空守着你
浏览 1915回答 4
4回答

浮云间

原回答: 只是为了判断number为正整数吗?&nbsp;number > 0 && Number.isInteger(number)根据作者意图做出解释修正:你这个判断的关键在那个按位或操作符上,如果number是整数的话,比如 10, 那么&nbsp;10 | 0 == 10, 但是 如果是小数的话,或出来的结果也是整数&nbsp;10.1 | 0 == 10。同时有number - 0 操作,那么如果number == 'abc'这样的字符串&nbsp;number - 0 == NaN&nbsp;这时候再按位与为&nbsp;NaN | 0 == 0&nbsp;就避免了报错。回到你的条件,如果number是整数,那么条件不成立,也就不用提示用户再输入正确的数量,如果number是小数,那么条件成立,提示用户输入正确的数量。这个条件不会判断正负,只关心是不是整数。如果number 是 '123'这样的字符串,条件不成立, 如果是 'abc' 这样的字符串,条件成立。结论:&nbsp;书上没写错。这个条件会在用户输入小数,非数字的字符串时成立。如果非要判断>0的话,可以这样写if&nbsp;(((&nbsp;number&nbsp;-&nbsp;0&nbsp;)&nbsp;|&nbsp;0&nbsp;)&nbsp;!==&nbsp;(number&nbsp;-&nbsp;0)&nbsp;&&&nbsp;((&nbsp;number&nbsp;-&nbsp;0&nbsp;)&nbsp;|&nbsp;0&nbsp;)&nbsp;<=&nbsp;0)

慕标5832272

~~number === number
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript