前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >null和undefined的区别是什么

null和undefined的区别是什么

作者头像
OECOM
发布2020-07-02 11:43:01
8320
发布2020-07-02 11:43:01
举报
文章被收录于专栏:OECOMOECOM

这两个东西其实从表面来看,没有多大的区别,都表示的是空,在其他的语言中一般情况下只有null这个值,undefined 却是javascript才有的。

定义区别

先从定义上来看他的区别:

在犀牛书--《javaScript权威指南》这本书中说: null 和 undefined 都表示“值的空缺”,你可以认为undefined是表示系统级的、出乎意料的或类似错误的值的空缺,而null是表示程序级的、正常的或在意料之中的值的空缺。

而在红宝书--《javaScript高级程序设计》这本说说:在使用var声明变量但未对其加以初始化时,这个变量的值就是undefined。 null值则是表示空对象指针。

通过typeof运算符来看也是有区别的

代码语言:javascript
复制
console.log(typeof null);
console.log(typeof undefined);

通过运算我们可以发现结果分别为Object和undefined。所以你也可以理解为null是一个特殊的对象

内存上的区别

给一个全局变量赋值为null,相当于将这个变量的指针对象以及值清空,如果是给对象的属性 赋值为null,或者局部变量赋值为null,相当于给这个属性分配了一块空的内存,然后值为null, JS会回收全局变量为null的对象。

给一个全局变量赋值为undefined,相当于将这个对象的值清空,但是这个对象依旧存在,如果是给对象的属性赋值 为undefined,说明这个值为空值

综上总结

null表示"没有对象",即该处不应该有值。典型用法是:

  • 作为函数的参数,表示该函数的参数不是对象。
  • 作为对象原型链的终点。

undefined表示"缺少值",就是此处应该有一个值,但是还没有定义。典型用法是:

  • 变量被声明了,但没有赋值时,就等于undefined。
  • 调用函数时,应该提供的参数没有提供,该参数等于undefined。
  • 对象没有赋值的属性,该属性的值为undefined。
  • 函数没有返回值时,默认返回undefined。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-12-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 定义区别
  • 内存上的区别
  • 综上总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档