2021前端常见面试题必考必问:JS中null和undefined与NaN的判断方法和区别?

JS中null与undefined的区别?

1. 相同点


if 判断语句中,两者都会被转换为false

2. 不同点

null

null表示一个值被定义了,但是这个值是空值
作为函数的参数,表示函数的参数不是对象

作为对象原型链的终点 (Object.getPrototypeOf(Object.prototype))

定义一个值为null是合理的,但定义为undefined不合理(var name = null)  

null示例:

NaN

NaN 属性是代表非数字值的特殊值。该属性用于指示某个值不是数字。可以把 Number 对象设置为该值,来指示其不是数字值。

提示:请使用 isNaN() 全局函数来判断一个值是否是 NaN 值。

提示:请使用 isNaN() 来判断一个值是否是数字。原因是 NaN 与所有值都不相等,包括它自己。

语法

Number.NaN

说明

Number.NaN 是一个特殊值,说明某些算术运算(如求负数的平方根)的结果不是数字。

Number转换的值不同,Number(null)输出为0, Number(undefined)输出为NaN。

方法 parseInt() 和 parseFloat() 在不能解析指定的字符串时就返回这个值。

对于一些常规情况下返回有效数字的函数,也可以采用这种方法,用 Number.NaN 说明它的错误情况。

JavaScript 以 NaN 的形式输出 Number.NaN。请注意,NaN 与其他数值进行比较的结果总是不相等的,包括它自身在内。因此,不能与 Number.NaN 比较来检测一个值是不是数字,而只能调用 isNaN() 来比较。

资料:

JS中的NaN_码飞_CC的博客-优快云博客_js nanJavaScript中,NaN是一个特殊的数字值(typeof NaN的结果为number),是not a number的缩写,表示不是一个合法的数字。1. NaN的产生:一个不能被解析的数字Number('abc') // NaNNumber(undefined) // NaN失败的操作Math.log(-1) // NaNMath.sqrt(-1) // NaNMat...https://blog.youkuaiyun.com/cc18868876837/article/details/101224974

undefined

    
undefined表示缺少值,即此处应该有值,但是还没有定义
变量被声明了还没有赋值,就为undefined

调用函数时应该提供的参数还没有提供,该参数就等于undefined

对象没有赋值的属性,该属性的值就等于undefined

函数没有返回值,默认返回undefined

undefined示例:

var i;
console.log(i) // undefined变量被声明了还没有赋值

function f(x){
console.log(x)// undefined调用函数时应该提供的参数还没有提供
}

f() // undefined调用函数时应该提供的参数还没有提供

var  o = new Object();
console.log(o.p) // undefined对象没有赋值的属性

var x = f();
console.log(x) // undefined函数没有返回值,默认返回undefined
VM194:2 undefined
VM194:5 undefined
VM194:11 undefined
VM194:5 undefined
VM194:14 undefined
undefined

JS中判断null、undefined与NaN的方法?

1.判断undefined:

1

2

3

4

var tmp = undefined;

if (typeof(tmp) == "undefined"){

alert("undefined");

}

说明:typeof 返回的是字符串,有六种可能:"number"、"string"、"boolean"、"object"、"function"、"undefined"

2.判断null:

1

2

3

4

var tmp = null;

if (!tmp && typeof(tmp)!="undefined" && tmp!=0){

alert("null");

}

3.判断NaN:

1

2

3

4

var tmp = 0/0;

if(isNaN(tmp)){

alert("NaN");

}

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

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

4.判断undefined和null:

1

2

3

4

5

var tmp = undefined;

if (tmp== undefined)

{

alert("null or undefined");

}

1

2

3

4

5

var tmp = undefined;

if (tmp== null)

{

alert("null or undefined");

}

说明:null==undefined

<!--EndFragment-->

5.判断undefined、null与NaN:

1

2

3

4

5

var tmp = null;

if (!tmp)

{

alert("null or undefined or NaN");

}

提示:一般不那么区分就使用这个足够。

资料:

https://www.jb51.net/article/48481.htmhttps://www.jb51.net/article/48481.htm

JS 中判断空值 undefined 和 null - Rainyn - 博客园1.JS 中如何判断 undefined JavaScript 中有两个特殊数据类型:undefined 和 null,下节介绍了 null 的判断,下面谈谈 undefined 的判断。 以下是不正https://www.cnblogs.com/thiaoqueen/p/6904398.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南北极之间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值