null和undefiend的区别(new)

首先给出官方文档对这两个概念的解释来,官方技术文档最可靠呀。

概念该解释解释(what is it )

null的概念解释

MDN: The value null  represents the intentional absence of any object value. It is one of JavaScript's primitive values.

ECMA-262: primitive value that represents the intentional absence of any object value

//代表任意对象值有意想变空或者没有的原始值

(自己的翻译写上去,每个人的都有让自己明白概念的翻译)

undefined的概念解释

MDN: The global undefined property represents the primitive value undefined. It is one of JavaScript's primitive types.

ECMA-262: primitive value used when a variable has not been assigned a value//当一个变量没有绑定值时该原始值会被使用

使用方法区别(how to use)

null的使用:

记住:null表示"没有对象,该处的变量没有值"

 _有属性的对象想变成空,它想空虚了嘛:

var obj = {name: "rong",age:23};obj = null;

_作为Object对象原型链的终点:

Object.getPrototypeOf(Object.prototype);//null

_调用RegExp.prototype.exec()方法匹配没有结果时会返回null
  /x/.exec('aaa');//null

undefined的使用:

记住: undefined是为没有初始化的变量而生的值

_变量未初始化的时候 

var message;//undefined

_函数命名了参数,调用时却未提供值

function say(name){alert(name)};

say();//弹出undefined

_在函数中使用了return语句,

历史原因

null 和 undefined都扮演的'无'的角色,为什么要两个来表示呢,如果要明白这个就得问问Brendan Eich,所以要回到设计这时候的历史来。

JavaScript呢也沿用了Java把值分为原始值和对象的方法,也使用了对于“不是对象”的java的值null。这是JavaScript第一个版本时候设计的当时还没有undefiend呢。因为这是10天完成的设计语言所以完美是不可能的再讲当时还没有错误处理机制,一些想不到的案例呢如没有初始化的变量值或者缺少值的属性都要指示一个值来表示,当时null是最好的选择,但是Brendan Eich当时想要避免两种事。

第一:这个值不希望是null

第二:这个值也不希望转换为0

var message;//输出messeg不希望是null

Number(message);//不希望是0而是NaN

所以呢为JavaScript语言增加了udnefiend这个值

null设计缺陷

typeof null //返回结果是 'object' 

typeof null//本来是要返回结果'null'   bug in EcMAScript ,should be null

如果被修复回去的话,会破坏大量的网站和代码。所以不能修复了。

参考资料

undefined与null-阮一峰

MDN ECMAScript规范

《Speaking JavaScript》

null修改被拒绝

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,859评论 18 139
  • 1.在C/C++中实现本地方法 生成C/C++头文件之后,你就需要写头文件对应的本地方法。注意:所有的本地方法的第...
    JayQiu阅读 2,395评论 0 3
  • 2017.06.18 小的时候,我最爱父亲了,什么事情都以父亲为傲。这个玩具是我父亲给我买的,这些荔枝也是,小时候...
    鸭蛋呀阅读 423评论 0 3
  • 长久以来,我都不知道该怎么说话。是的,别看现在算能写两个字,一副会表达的样子,大部分时候,我经历着不知道怎么说话的...
    杨夏阅读 1,132评论 7 15
  • 第二日,便收到焕漓郡主被离境退婚的消息。当时莫离正在拿着一个瓜瓢浇前几日在屋前刚种下的曼陀罗花。听到这个消息,她的...
    嚒嚒哒阅读 236评论 0 1