null和undefined是JavaScript五种基本数据类型中的两种。
null是一个特殊值,但我们常常误解它,有时候我们会把它和另一个数据类型undefined的含义互相混淆。
首先我们来了解一下null这个特殊值会使用在哪些场景以及它代表着什么样的含义?
1.用来初始化一个变量,这个变量可能赋值为一个对象。看着可能有点懵逼,我们结合代码来解析一下。如下:
var person = null;
//也就是说上面那句话可以这么理解:声明一个变量,初始化这个变量的变量值为null,这个变量可能是一个对象。
2.用来和一个已经初始化的变量比较,这个变量可以是也可以不是一个对象。同样我们结合代码来解析一下。如下:
var person = getPerson();
if ( person !== null){
doSomething();
}
看完代码是不是就一目了然了?原理是为代码做铺垫的,万事离不开代码,所以理解不了原理,我们就结合代码来理解。当你知道代码你却不知道它的原理,当你知道它的原理却不知道它的代码。所以小刘就建议大家用原理+代码来理解和学习。
3.当函数的参数为对象时,用作参数传入。
function doSomething (arg1){
if(arg1===Object ){
arg1=null;
}
}
4.当函数的返回值是对象时,用作返回值传出。
function getPerson(){
if (condition){
return new Person("KobeBryant");
}else{
return null;
}
}
其次,当我们知道了null的使用场景,是不是也得知道在什么样的场景是不应当使用null的呢?
1.不要使用null来检测是否传入了某个参数。
function doSomething (arg1,arg2,arg3,arg4) {
if (arg2 !==null ){
doSomethingElse();
}
}
2.不要用null来检测一个未初始化的变量。
var person;
if ( person !== null){
doSomething();
}
//用来和未初始化的变量作比较
看了上面的讲解,是不是瞬间秒懂并掌握,如果对您有帮助,请点个赞,如果哪里不够好,请互相学习,可以评论下,我们交流下~
我们继续学习,接下来来对undefined这个莫名其妙的东西进行解析。
同null一样,undefined也是一个特殊值,它是那些被声明了却未初始化的变量,即undefined,等待被赋值;
如:var person;
console(person === undefined);//输出为true
虽然这段代码能够正常工作,但是还是避免在代码中使用undefined,因为不管声明了变量还是未声明的变量,typeof运算结果都能返回一个undefined值。
如:var person;
console(typeof person);//输出值为undefined;
console(typeof foo);//输出值为undefined;
在语句中,未声明的变量是会报错的,通过禁用特殊值undefined,可以有效的确保只在一种情况下typeof才会返回undefinedl:那就是当变量未声明时;如果使用了一个可能赋值为一个对象的变量时,则将其赋值为null;将变量初始化赋值为null表明了这个变量的意图,它最终很可能赋值为对象。typeof运算符运算null的类型时返回Object,这样就可以和undefined区分开了。
如:console(null ==undefined);//输出值为true
var person=null;
console(typeof null);//输出值为object