一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第16天,点击查看活动详情。
简介:
- null是一个表示“无”的对象,转为数值时为0。
- undefined是一个表示“无”的原始值,转为数值时是NaN,当声明变量还未初始化时,变量的默认值为undefined。
定义:
- undefined:是所有没有赋值变量的默认值,自动赋值。
- null:主动释放一个变量引用的对象,表示一个变量不再指向任何对象地址,null使用操作符typeof会返回object,因为null是一个空的对象引用。
用法:
undefined:
- undefined表示 缺少值,就是此处应该有一个值,但是还没有定义,典型用法是:
- 变量被声明了,但是没有赋值,就等于undefined。
- 调用函数时,应该提供的参数没有提供,该参数就等于undefined。
- 对象没有赋值的属性,该属性的值为undefined。
- 函数没有返回值时,默认返回undefined。
null:
- null用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象。表示没有对象,即该处不应该有值,典型的用法是:
- 作为函数的参数,表示该函数的参数不是对象。
- 作为对象原型链的终点。
- 当使用完一个比较大的对象时,需要对其进行释放内存时,设置为null。
异同点:
- 共同点:都是原始类型,保存在栈中变量本地。
- 不同点:
- undefined:表示变量声明过但并未赋值,他是所有未赋值变量的默认值。
- null:表示一个变量将来可能指向一个对象,一般 用于主动释放指向对象的引用。
延伸:垃圾回收站
它是一个专门释放对象内存的一个程序。
- 在底层,后台伴随当前程序同时进行,引擎会定时自动调用垃圾回收机制。
- 总有一个对象不再被任何变量引用时,才释放。
示例代码:
typeof undefined //undefined
typeof NULL //undefined
typeof null //object
typeof function(){} //function
typeof class{} //object