一般外运算中一个数除以0一般是不成立的但是在javascript中却是infinity(正无穷)
var a=4;
var b=a/0;
if(b==b){
console.log( b * 2 + "2" - 0 + 4);
}else {
console.log(!b * 2 + "2" - 0 + 4);
}
我本来以为输出结果也是infinity但是结果却是NaN为什么?求解
一般外运算中一个数除以0一般是不成立的但是在javascript中却是infinity(正无穷)
var a=4;
var b=a/0;
if(b==b){
console.log( b * 2 + "2" - 0 + 4);
}else {
console.log(!b * 2 + "2" - 0 + 4);
}
我本来以为输出结果也是infinity但是结果却是NaN为什么?求解
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
因为这个跟除以0没关系,NaN是因为你用了一个非纯数字的字符串去减一个数字,在JS中 ’-‘操作符会强制将字符串转为数字类型进行运算,
b * 2 + "2"
得到"Infinity2"
, 用一个字符串"Infinity2"
减0,肯定会NaN啊,因为Number("Infinity2")
的结果是NaN, 而任何数跟NaN计算都会是NaN。这里面涉及到JS运算符的强制转换知识,你可以去了解下。