【JavaScript】null和undefined的分别

1.null和undefined都被用来表示空值,当使用不严加等于号(==)做判定时,他们是等价的

console.log(null == undefined);//输出true
console.log(null === undefined);//输出false

这也是干吗大家在代码中判断相等时避免使用==

2.当对null执行typeof运算时,结果重回object,也就是说null是一个对象,表示“空对象”
null的顶级用法包括:

  • 用作函数的参数,表示该函数的参数不是目标。比如在采纳Ajax举行get时,大家常用request.send(null)表示不发送数据
  • 用作靶子原型链的极限。在利用for in遍历原型链的会用到。

console.log(Object.getPrototypeOf(Object.prototype));//输出null

3.undefined,顾名思义代表“未定义”,它是变量的一种取值,表示变量没有开头化。
undefined的用法包括:

  • 变量被声称了,但未曾赋值时,等于undefined
    JavaScript函数成效域中会发生变量申明提前

var func = function(){
      console.log(a);//输出undefined
      var a = "hello";
};
func();

等价于

var func = function(){
      var a;
      console.log(a);//输出undefined
      a = "hello";
};
func();
  • 查询数组元素或对象属性时重回undefined,表示该因素或性质不存在
    在使用专业for遍历数组时,倘诺数组中某个元素未定义,就会输出undefined

var mycars = new Array();
mycars[0] = "Saab"; 
mycars[2] = "Volvo"; 
mycars[4] = "BMW";
for (y=0;y<mycars.length;y++){ 
    console.log(mycars[y]); //输出Saab,undefind,Volvo,undefined,BMW
}

不过用for in遍历时,并不会输出undefined

for (y in mycars){ 
    console.log(mycars[y]); //输出Saab,Volvo,BMW
}

故而有人推荐不拔取for in,其实还有更深层次的缘由。因为for
in是对任何原型链的遍历,如若大家修改了数组的原型,那么遍历出的结果就不仅仅是数组中的元素了。

  • 函数没有重回值,再次回到undefined
  • 调用函数时,应该提供的参数没有提供,该参数等于undefined

相关文章