javascript高级篇之null和undefined的区别

390 阅读2分钟

本人已参与「新人创作礼」活动,一起开启掘金创作之路。

null和undefined的介绍

作为javascript中两个只拥有一个值的类型,看起来好像是差不多。实则不然。这两种代表的意义完全不同,我们在进行高复杂度的逻辑运算时是有必要分清他们的区别的。

如果是简略了解的话,直接看下面的“null和undefined的区别”这章节即可

undefined、

undefined不是关键字。

undefined意思是一个声明了但是没有任何定义的(连null都没有)变量,神奇的是,连申明都没有被声明的变量,在判断的时候也会被提示为undefined。

而这两种undefined(已申明没有值,未声明)他们区别在于,会不会报错。

举个例子👇

let a   //申明a 但是没有任何赋值
console.log(a)   // 输出:undefined
//下面的b是没有被声明的
console.log(b); //什么都不会输出,浏览器会直接报错: Uncaught ReferenceError: b is not defined

已经声明但是没有进行任何定义的,是undefined

未声明直接用的变量,不仅是undefined还会报错

null

null 是关键字。

null 也是一个“期望” 对象,注意null不是对象,是“期望”对象。null表示指向一个空对象。

为什么说null是一个“期望”对象呢?我们看看下面的例子

let a = null;
console.log(tyoeof a === "object")   //  true
console.log(Boolean(a))     //false
console.log(Boolean(new Object()))   //true

大家注意到没有,判断null的typeof是 object,但是使用Boolean()函数同时对null和object进行转换的时候,null是false,而object是true

所以说,null是一个“期望”对象,不是真的对象。

实际上,typeof null得出的结果为object是javascript在底层设计时候的一个错误,一个bug,只是后来被沿用了下来,这个官方有解释。

null有一个很好的用处!!当我们需要释放一个变量存储空间的时候,就可以将这个变量设为null,在闭包中常能用到

null和undefined的区别

  • undefined 是一个全局变量,null是关键字
  • undefined代变量被声明了但是没有任何定义,null代表了变量被声明了但指向一个空的对象
  • null可以用于释放变量存储空间,但是undefined不行

常规我们建议在进行对象初始化的时候(需要声明对象,但是还不知道对象里面有什么值的时候),就给赋一个null;

欢迎技术沟通,摸鱼聊天~

备注来自掘金~

wx:XXF1096032096