Nan和isNan的区别

NaN的全称是…

NaN为什么存在

它表示应该返回一个number,但是缺没有返回一个number的情况。它之所以存在,是为了在某些异常情况下,让程序能够正常执行。就比如说用任意一个数字除以0,在java中会报错,但是在js中不会报错

public class DivideByZero {
    public static void main(String[] args) {
        int number = 0;
        int result = number / 0;  // 这里会抛出ArithmeticException
        System.out.println(result);
    }
}
Exception in thread "main" java.lang.ArithmeticException: / by zero
console.log(5 / 0);  // 输出: Infinity
console.log(-5 / 0); // 输出: -Infinity
console.log(0 / 0);  // 输出: NaN

它为什么会报错呢?因为在数学中,0是不能作为除数的,所以Java会抛出异常,终止程序的执行。但是在JavaScript中因为有NaN这么一个值的存在,它使得程序能够稳定执行下去。

NaN的特点

一:与任何值相加都会得到NaN
1。与任何数字相加都会得到NaN
2。NaN与自身相加也会得到NaN
3.NaN+undefined也会得到NaN

console.log(NaN + 5);          // 输出: NaN
console.log(NaN + "hello");   // 输出: NaN
console.log(NaN + true);      // 输出: NaN
console.log(NaN + false);     // 输出: NaN
console.log(NaN + null);      // 输出: NaN
console.log(NaN + undefined); // 输出: NaN
console.log(NaN + {});        // 输出: NaN
console.log(NaN + []);        // 输出: NaN

二:与任何值都不相等

console.log(NaN === NaN);         // 输出: false
console.log(NaN === 5);          // 输出: false
console.log(NaN === 'string');   // 输出: false
console.log(NaN === undefined);  // 输出: false
console.log(NaN === null);       // 输出: false
console.log(NaN === true);       // 输出: false

区别是什么

ES5之前:isNaN()
ES6:Number.isNaN

概念:
isNaN(): 检查一个值是否是 NaN 或者是其他非数字值(如字符串)并尝试转换为数字。
Number.isNaN(): 仅检查一个值是否是 NaN。

console.log(isNaN(NaN));        // true
console.log(isNaN("apple"));   // true,因为"apple"不是一个数字,并且不能转换为数字
console.log(isNaN(123));       // false,因为123是一个数字
console.log(isNaN("123"));     // false,因为"123"可以被转换为数字

console.log(Number.isNaN(NaN));         // true
console.log(Number.isNaN("apple"));    // false,因为它只检测 NaN,不关心其他值
console.log(Number.isNaN(123));        // false
console.log(Number.isNaN("123"));      // false

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AlgorithmHero

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值