我能理解为什么
10 % "test"
返回NaN
...,因为“ test”首先转换为一个数字,得到NaN
,然后涉及NaN
的任何后续算术运算也产生NaN
。
但是为什么
10 % "0"
返回NaN
吗?
"0"
通常会转换为0
等数字,例如在1 * "0"
中。
如果我尝试10 / "0"
,则会得到Infinity
,这也很有意义。
所以...为什么表达式10 % "0"
返回NaN
?这背后有逻辑吗?
答案 0 :(得分:4)
您的猜测是正确的,在所有仅 number 个运算符中,如果在字符串中使用Javascript,它将尝试将其转换为数字。
其余运算符也是如此:
const x = "10"%"3";
console.log('10 % 3 = ' + x);
那么,为什么要NaN
评估10%"0"
?好吧,它将被转换为10%0
,但是如果在0上使用,则余数运算符没有特殊含义(在第一实例中不能除以0)。这样就得到了NaN:
const x = 10 % 0; // numeric only operation
console.log('10 % 0 = ' + x); // NaN, the above operation has no meaning
答案 1 :(得分:2)
10 % 0
还会返回NaN
,因为当您除以0时,您要问的是余数,因此没有任何有意义的答案。