es6语法中关于Number.isNaN()的运用方法

2025年03月04日 建站教程

在js中与其它的值不同,NaN不能通过相等操作符(== 和 ===)来判断 ,因为NaN == NaNNaN === NaN都会返回 false。 因此,判断一个值是不是NaN是有必要的。

1、NaN值的产生

Number(undefined)               // NaN
Number('undefined')             // NaN
Number('string')                // NaN
Number({})                      // NaN
Number('10,3')                  // NaN
Number('asd321')                // NaN
Number(new Date().toString())   // NaN

2、isNaN()的问题

isNaN(NaN);       // true
isNaN(undefined); // 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("imooc")   // true: "blabla"不能转换成数值
                 // 转换成数值失败, 返回NaN

3、Number.isNaN()详情

Number.isNaN(NaN);        // true
Number.isNaN(Number.NaN); // true
Number.isNaN(0 / 0)       // true

// 下面这几个如果使用全局的 isNaN() 时,会返回 true。
Number.isNaN("NaN");      // false,字符串 "NaN" 不会被隐式转换成数字 NaN。
Number.isNaN(undefined);  // false
Number.isNaN('undefined');// false
Number.isNaN({});         // false
Number.isNaN("blabla");   // false

Number.isNaN(true);      // false
Number.isNaN(null);      // false
Number.isNaN(37);        // false
Number.isNaN("37");      // false
Number.isNaN("37.37");   // false
Number.isNaN("");        // false
Number.isNaN(" ");       // false

本文链接:http://so.lmcjl.com/news/24258/

展开阅读全文