我能理解为什么10 % "test"返回NaN......因为“测试”首先被转换为一个数字NaN,然后给出任何涉及NaN结果的后续算术运算NaN。但为什么 10 % "0"返回NaN?"0"通常转换为数字,0例如 in 1 * "0"。如果我尝试10 / "0"这Infinity也有道理。那么......为什么那个表达式10 % "0"返回NaN?!这背后有什么逻辑吗?
2 回答
偶然的你
TA贡献1841条经验 获得超3个赞
您的猜测是对的,在所有仅数字运算符中,如果在字符串中使用,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
添加回答
举报
0/150
提交
取消