码迷,mamicode.com
首页 > Web开发 > 详细

JS中undefined与null的区别

时间:2016-06-30 19:48:38      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:

1、概述:

  在JavaScript中存在这样两种原始类型:Null与Undefined。这两种类型常常会使JavaScript的开发人员产生疑惑,在什么时候是Null,什么时候又是Undefined?

  有人说这两个返回值,没有什么区别,只是历史遗留问题罢了,其实还是有一点区别的。

2、null和undefined的发展史:

  大多数计算机语言,有且仅有一个表示"无"的值,比如,C语言的NULL,Java语言的null,Python语言的None,Ruby语言的nil。

  有点奇怪的是,JavaScript语言居然有两个表示"无"的值:undefined和null。这是为什么?

  这与JavaScript的历史有关。1995年JavaScript诞生时,最初像Java一样,只设置了null作为表示"无"的值。

  根据C语言的传统,null被设计成可以自动转为0。


Number(null)
// 0

5 + null
// 5

  但是,JavaScript的设计者Brendan Eich,觉得这样做还不够,有两个原因。

  首先,null像在Java里一样,被当成一个对象。但是,JavaScript的数据类型分成原始类型(primitive)和合成类型(complex)两大类,Brendan Eich觉得表示"无"的值最好不是对象。

  其次,JavaScript的最初版本没有包括错误处理机制,发生数据类型不匹配时,往往是自动转换类型或者默默地失败。Brendan Eich觉得,如果null自动转为0,很不容易发现错误。

因此,Brendan Eich又设计了一个undefined。

JS中undefined与null的区别

标签:

原文地址:http://www.cnblogs.com/shazhou-blog/p/5315948.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!