本人已参与「新人创作礼」活动,一起开启掘金创作之路。
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