本书未发布

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

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~