VScode插件:前端每日一题

isNaN 和 Number.isNaN 函数有什么区别?

isNaNNumber.isNaN 都是 JavaScript 中用于检查值是否为 "NaN"(Not-a-Number)的函数,但它们在判断的逻辑上有所不同。

1. isNaN

isNaN 是全局函数,用于判断一个值是否是 NaN 或是否不能转换为一个有效的数字。如果传入的值无法被转换成数字,isNaN 会返回 true,否则返回 false

特点

  • isNaN 会先尝试将传入的值转换为数字。
  • 如果值本身不是数字(例如字符串、对象等),它会尝试强制转换为数字,然后判断转换后的结果是否是 NaN

示例

isNaN('hello');   // true,因为字符串 'hello' 不能被转换为数字
isNaN(123);       // false,已经是一个有效数字
isNaN('123');     // false,因为字符串 '123' 会被转换为数字 123
isNaN(true);      // false,因为布尔值 true 会被转换为数字 1
isNaN(undefined); // true,因为 undefined 不能转换为有效的数字

2. Number.isNaN

Number.isNaNNumber 对象的方法,用于严格检查传入的值是否 是 NaN,而不做类型转换。如果传入的值本身就是 NaN,才返回 true,否则返回 false

特点

  • Number.isNaN 不会进行类型转换,只会判断值是否严格等于 NaN
  • 如果值不是 NaN,无论它是什么类型,它都返回 false

示例

Number.isNaN('hello');    // false,因为 'hello' 不是 NaN
Number.isNaN(123);        // false,123 不是 NaN
Number.isNaN(NaN);        // true,因为它是 NaN
Number.isNaN(undefined);  // false,undefined 不是 NaN

主要区别:

  • 类型转换isNaN 会首先将参数强制转换为数字,然后判断结果是否为 NaN;而 Number.isNaN 不会进行任何类型转换,它只会返回 true 如果传入的值本身就是 NaN

  • 准确性:由于 isNaN 会进行类型转换,它可能会导致一些意外的结果(例如,isNaN('123') 返回 false,虽然 '123' 不是 NaN,但它会被转换为数字)。而 Number.isNaN 更精确,它只返回 true 当且仅当传入的值是 NaN

总结:

  • isNaN:先转换为数字,如果转换结果是 NaN,返回 true
  • Number.isNaN:严格检查值是否是 NaN,没有类型转换。

通常情况下,Number.isNaN 更为准确,因此在判断是否是 NaN 时,推荐使用 Number.isNaN

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值