JavaScript的null与undefined分析

首先简单认识下null和undefined

null:零值的; 等于零的;不存在的
undefined:未阐明的; 未限定的;错误、不明确、未定义


相同点:

null与undefined用法与含义用很多共同之处,甚至能相互替代,效果一致。先看一段代码:


// 在工作台显示true,二者值相等

这段代码在相等运算符”==”的比较下会报告两者相等。在布尔类型中,二者都输出false:

//此时工作台会分别显示1和2,说明二者都代表false


不同点:

在数字类型下,null可以当成0,而undefined则是非数NaN。所以null可以参与数值运算,如123+null, 123*null 中的null都会转型为0。而数值与undefined运算的话,则显示NaN。另外,虽然undefined派生自null,但undefined不属于JavaScript的保留关键字,这也是二者的区别。所以我们可以把undefined当成变量名,而null却不可以。


单独讨论null:

null表示”没有对象”,即该处不应该有值或对象尚未存在,通俗一点就是函数不存在调用值。举个例子:

proto:原样
函数意思为返回原型的原型,这是不存在的,所以会返回null。
或者可以重置变量(参数或函数)。例如:

//输出null(空),可以理解为占位符,保留着a这个变量(参数或函数)


单独讨论undefined:

undefined表示声明了一个变量(参数或函数)但没有赋值,当该变量(参数或函数)被调用时,会显示undefined。例如:

//输出undefined,a未定义

这种情况不一定出现在未定义的情况下,很多新手使用JavaScript不熟练或编程时有疏忽造成函数没有返回值等情况,也会出现undefined,具体情况具体分析。更多情况下,定义未知返回的是null,定义不存在返回undefined。