javascript语言中NaN、null、undefined的判断方法

来源:网络 文章列表 2019-05-30 8
js的if else判断中包含undefined null false 0 NAN ""或''(空字符串)这留个值。其他值都视为true。

js的if else判断中包含undefined null false 0 NAN ""或''(空字符串)这留个值。其他值都视为true

而最难理解的就是null、undefined、NaN的判断了。下面我们就来一一讲解下。

 

一、判断特殊值NaN

NaN说明:NaN是 JavaScript 的特殊值,表示“非数字”(Not a Number),主要出现在将字符串解析成数字出错的场合。

出现NaN的场景

1、数值计算

5 - 'x' // NaN

2、数学函数的运算

Math.acos(2) // NaN
Math.log(-1) // NaN
Math.sqrt(-1) // NaN

3、0除以0也会得到NaN

0 / 0 // NaN

NaN不是独立的数据类型,而是一个特殊数值,它的数据类型依然属于Number,使用typeof运算符可以看得很清楚。

typeof NaN // 'number'

 

NaN的判断

如果把 NaN 与任何值(包括其自身)相比得到的结果均是 false,所以要判断某个值是否是 NaN值,不能使用 == 或 === 运算符。

NaN === NaN // false
NaN == NaN // false

 

方法一、通过 isNaN 可以判断一个数值是否为 NaN

isNaN(123)    // false
isNaN('123')  // false 相当于 isNaN(Number('123'))
isNaN('123a') // true   not a number

字符串 ‘123’返回的是false的原因是 isNaN 会先把参数转化为数字类型,再判断是不是 NaN

提示:isNaN() 函数通常用于检测 parseFloat()parseInt() 的结果,以判断它们表示的是否是合法的数字。当然也可以用 isNaN() 函数来检测算数错误,比如用 0 作除数的情况。 

isNaN('blabla') // true
isNaN(123)      // false

var tmp = 5 - 'abc';
if(isNaN(tmp){
  console.log('not a number');
}

上例子输出:not a number

上面我们说了,isNaN只能判断数值是否是 NaN 这个特殊的值。

 

方法二、先判断是不是数字,然后再使用 isNaN()

var tmp = 5 - 'abc';
console.log(typeof tmp === 'number' && window.isNaN(tmp))
// true

这里我们可以封装成一个自定义函数

/**
 * return true 位 NaN值,false 为非NaN值。
 */
function check_isNaN (val) {
  return typeof val === 'number' && window.isNaN(val);
}

check_isNaN(5-'abc'); // true
check_isNaN(0/0);     // true
check_isNaN(NaN);     // true
check_isNaN(123);     // false
check_isNaN('abc');   // false

 

二、判断 undefined值

undefined的判断比较容易,只要用 typeo f判断下就行

var tmp = undefined; 
if (typeof tmp == "undefined"){ 
  alert("undefined"); 
}

 

三、判断 null 值

null值的判断,我们必须先判断值是否为空,是否为undefined

var tmp = null; 
if (!tmp && typeof(tmp)!="undefined" && tmp!=0){
  alert("null");
}
    

 

版权声明

本站部分原创文章,部分文章整理自网络。如有转载的文章侵犯了您的版权,请联系站长删除处理。如果您有优质文章,欢迎发稿给我们!联系站长:
愿本站的内容能为您的学习、工作带来绵薄之力。

评论

  • 随机获取
点击刷新
精彩评论