本书未发布
isNaN() 函数和 Number.isNaN() 函数的区别
NaN 类型简介
- NaN 是属于 Number 类型的, 他表示该返回数值但是却没有返回数值的情况. 返回 NaN 的时候, 程序依然会继续执行, 并不会报错, 如 0/0 会返回 NaN, 但是并不会报错.
- 任何一个涉及到 NaN 的操作, 都会返回 NaN.
- NaN 与任何值都不相等, 即使是 NaN 本身也不相等
- isNaN() 函数是 es5 中的, 而 Number.isNaN() 是 es6 中的
isNaN()
在使用 isNaN() 的时候, 如果传入的是一个 Number 类型的话, 则很容易判断是否是 NaN, 但是如果传入一个非 Number 类型的话, 返回的结果就需要琢磨一下.
在使用 isNaN() 函数的时候, 他会先去判断传入的内容是否能够转换成数字, 如果能, 则返回 false, 如果不能, 则返回 true (即会先进行一次数据类型转换)
如下情况:
isNaN(NaN); // true isNaN(undefined); // true isNaN({}); // true isNaN(true); // false, true 转换成数字后是 1 isNaN(null); // false, null 转换成数字后是 0 isNaN(1); // false isNaN(''); // false isNaN('1') // false isNaN('qingshui'); // true, 'qingshui' 无法转换成数字 isNaN(new Date()); // false, new Date() 在转换成数字的时候, 会转换成时间戳 isNaN(new Date().toString()); // true, new Date() 在转换成字符串的时候, 会转换成一个字符串的时间, 如 "Wed Jun 23 2021 00:26:54 GMT+0800 (中国标准时间)"
Number.isNaN()
Number.isNaN() 在进行判断的时候, 不会进行数据类型转换, 只有在传入的值为 NaN 的时候, 才会返回 true, 其他情况都返回 false
如下情况:
Number.isNaN(NaN); // true Number.isNaN(undefined); // false Number.isNaN(null); // false Number.isNaN(true); // false Number.isNaN(''); // false Number.isNaN(123); // false
推荐文章: