javascript语言中NaN、null、undefined的判断方法
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");
}
版权声明
本站部分原创文章,部分文章整理自网络。如有转载的文章侵犯了您的版权,请联系站长删除处理。如果您有优质文章,欢迎发稿给我们!联系站长:
愿本站的内容能为您的学习、工作带来绵薄之力。
评论