javascript中的undefined,null,NaN,false区别

false

var a = false; console.log("a的数据类型为"+ typeof(a));

输出结果为

a的数据类型为boolean

这个很好理解,true和false为布尔值。

undefined

var b; console.log("b的数据类型为"+ typeof(b));

输出结果为

b的数据类型为undefined

所以undefined的意思就是未被赋值,声明了一个变量却没赋值时会返回undefined

NaN

var c = NaN; console.log("c的数据类型为"+ typeof(c));

c的数据类型为number

但是NaN为什么会是number呢?

看看MDN的介绍

NaN 是一个全局对象的属性。

NaN 属性的初始值就是 NaN,和 Number.NaN 的值一样。在现代浏览器中(ES5中), NaN 属性是一个不可配置(non-configurable),不可写(non-writable)的属性。但在ES3中,这个属性的值是可以被更改的,但是也应该避免覆盖。

在编码很少直接使用到 NaN。通常都是在计算失败时,作为 Math 的某个方法的返回值出现的(例如:Math.sqrt(-1))或者尝试将一个字符串解析成数字但失败了的时候(例如:parseInt(“blabla”))。

可以看出来对-1开平方会返回NaN.再看一个例子
NaN === NaN; //false
NaN不等于任何值,连它本身也不等于。我们可以利用这一点去获取数组中的NaN
return arr !== arr;

null

var e = null; console.log("e的数据类型为"+ typeof(e));

e的数据类型为object

MDN上这样介绍null.

值null是一个javascript字面量,表示空值,既没有对象被呈现。它是javascript原始值之一。

null和undefined的区别:

typeof null // object typeof undefined // undefined null === undefined // false null == undefined // true (==会强制转换类型)
附上如何判断null

JS中如何判断null

    原文作者:少年vv
    原文地址: https://www.jianshu.com/p/e2386d64d07b
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞