求余操作不是取模运算,它会返回与第一个操作数符号相同的值
9 % 7
2
-9 % 7
-2
而取模和第二个操作数的符号相同,这意味着下面的判断奇数的函数无效
var isOdd=function(n){
return n%2===1}
测试结果如下:
>console.log(isOdd(-5));
false
>console.log(isOdd(-4));
false
正确版本为:
var isOdd=function(n){
return Math.abs(n%2)===1}
测试结果如下:
>console.log(isOdd(-4));
false
>console.log(isOdd(-5));
true