【JavaScript】标准内置函数 isNaN
以下内容为学习记录,可以参考 MDN 原文。
环境
- node v12.18.1
- npm 6.14.5
- vscode 1.46
- Microsoft Edge 83
概念
isNaN() 函数用来确定一个值是否为 NaN。注:isNaN函数内包含一些非常有趣的规则;
你也可以使用 ECMAScript 2015 中定义的 Number.isNaN() 来判断。
如果给定值为 NaN 则返回值为 true;否则为 false。
isNaN 函数的必要性
与 JavaScript 中其他的值不同,NaN不能通过相等操作符(== 和 ===)来判断,
因为 NaN == NaN 和 NaN === NaN 都会返回 false。因此,isNaN 就很有必要了。
NaN 值的产生
当算术运算返回一个未定义的或无法表示的值时,NaN 就产生了。
但是,NaN 并不一定用于表示某些值超出表示范围的情况。
将某些不能强制转换为数值的非数值转换为数值的时候,也会得到 NaN。
ECMAScript (ES2015)包含 Number.isNaN() 函数。通过 Number.isNaN(x) 来检测变量 x 是否是一个 NaN 将会是一种可靠的做法。然而,在缺少 Number.isNaN 函数的情况下, 通过表达式(x != x) 来检测变量 x 是否是 NaN 会更加可靠。
一个 isNaN 的 polyfill 可以理解为(这个 polyfill 利用了 NaN 自身永不相等于自身这一特征 ):
var isNaN = function(value) {
var n = Number(value);
return n !== n;
};
示例
isNaN(NaN); // true
isNaN(undefined); // true
isNaN({}); // true
isNaN(true); // false
isNaN(null); // false
isNaN(37); // false
// strings
isNaN("37"); // false: 可以被转换成数值37
isNaN("37.37"); // false: 可以被转换成数值37.37
isNaN("37,5"); // true
isNaN('123ABC'); // true: parseInt("123ABC")的结果是 123, 但是Number("123ABC")结果是 NaN
isNaN(""); // false: 空字符串被转换成0
isNaN(" "); // false: 包含空格的字符串被转换成0
// dates
isNaN(new Date()); // false
isNaN(new Date().toString()); // true
isNaN("blabla") // true: "blabla"不能转换成数值
// 转换成数值失败, 返回NaN
分类:
JavaWeb
, JavaScript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!