original answer: just to judge that number is a positive integer? number > 0 & & Number.isInteger (number)
make explanations and corrections according to the author's intention:
the key to your judgment lies in the bitwise or operator. If number is an integer, such as 10, then 10 | 0 = = 10
, but if it is a decimal, or the result is also the integer 10.1 | 0 = = 10
. If there is a number-0 operation at the same time, if a string such as number = = 'abc' number-0 = = NaN
, then bitwise and NaN | 0 = = 0
will avoid reporting an error.
back to your condition, if number is an integer, then the condition is not true, there is no need to prompt the user to enter the correct quantity, if the number is a decimal, then the condition holds, prompting the user to enter the correct quantity. This condition will not judge whether it is positive or negative, but whether it is an integer or not. If number is a string like '123', the condition is not true; if it is a string like 'abc', the condition is true.
conclusion: there is nothing wrong in the book. This condition is true when the user enters a decimal, non-numeric string.
if you have to judge > 0, you can write
like this.
positive integer, actually very simple, only need three steps if, first, it is not a non-digital isNaN, second, it is an integer, after rounding processing, compare whether it is the same equivalent, if it is an integer, otherwise it is not an integer, three, it is not negative, that is, greater than 0. That's it. Of course, if you want to write it succinctly, you can study it.