ES6的7大数据类型里面有这俩玩意:undefined和null,让接触不深的学习者常常产生混淆,这俩玩意的区别在哪呢?
字面意思上来看,undefined是未(被我们)阐明的,未说明的,null则意思为空。高考语文100出头的我认为就是一个声明了但是没定义里面的内容,一个就单纯的是啥也没有,空空如也。
var x1;
var x2 = null;
console.log(x1);//undefined
console.log(x2);//null
我们在控制台内查看JS的空容器也会发现里面的元素是以null来说明,而不是undefined。
那么我们如何在程序层面判断这俩呢?
先来看undefined:
var exp = undefined;
if (typeof(exp) == "undefined")
{
alert("undefined");
}
这应该是我们最常用的办法了,为什么不能让二者直接判断而是要套上一个typeof呢?这里有一点我们必须要弄清楚,ECMAScript认为undefined是从null派生出来的,所以把它们定义为相等的。所以必须要套上一个typeof或者用===来表示才可以。
至于null,那麻烦更大了,如果你单纯的使用==并且前置!符号来表示判断的话,ECMAScript不光会混淆undefined了,还混淆了0!!!
var exp = null;
if (!exp && typeof(exp) != ”undefined” && exp!=0)
{
alert(“null”);
}
所以我们还是简单点吧,二者都使用===直接判断数据类型比较稳
var exp = null;
if(exp === null){
console.log("null");
}