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)
添加回答
举报
0/150
提交
取消