1.null(当做对象的占位符)
null是一个特殊值,常与undefined搞混,应用场景:
- 用来初始化一个变量,这个变量可能赋值为一个对象
- 用来和一个已经初始化的变量比较,这个变量可以是一个对象也可以不是
- 当函数的参数期望是对象时,用作参数传入
- 当函数的返回值期望是对象时,用作返回值传出
不应当使用null:
- 不要使用null来检测是否传入了某个参数
- 不要用null来检测一个未初始化的变量
```
//好的用法,用来初始化一个变量,这个变量可能赋值为一个对象
var person=null;
//好的用法,当函数的返回值期望是对象时,用作返回值传出
function getPerson(){
if(condition){
return new Person("zzz")
}else{
return null;
}
}
//好的用法,用来和一个已经初始化的变量比较,这个变量可以是一个对象也可以不是
var person=getPerson()
if(person!==null){
dosomething();
}
//不好的用法,和未初始化变量比较
var person;
if(person!=null){
dosomething()
}
//不好的用法,检测是否传入了参数
function doSomething(a,b,c,d){
if(d!==null){
dosomething()
}
}
```
2.undefined
undefined是一个特殊值,我们经常和null搞混,null==undefined结果是true,然而他俩用处各不相同,那些未初始化的变量,都有一个初始值,即undefined,表示这个变量等待赋值。
```
//不好的写法
var person;
console.log(person====undefined)//true
```
不建议使用undefined!!!
不管是值为undefined的变量,还是未声明的变量,typeof的结果都是undefined
```
//foo未声明
var person;
console.log(typeof person) //undefined
console.log(typeof foo) //undefined
```
在语句中使用foo,会报错,而person不会
通过禁止使用undefined,确保只有未声明的时候才会undefined,将变量初始值赋值为null,表明可能为对象,typeof nulll返回object,与undefined区分
```
var person=null
```
网友评论