null和undefined

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了null和undefined相关的知识,希望对你有一定的参考价值。

      最近在自行研究javascript以及相关的知识,由于没有在网上能找到非常细致的相关知识,所以购买了JavaScript权威指南一书(第六版)。不得不说,人家淘宝团队真是厉害,厚厚一大本,翻译的非常不错,更好的是内容非常详细。值得有经验的开发人员观看。对于这个书的赞美就不说辣么多了,回到正题。

      在之前的JavaScript开发中,经常见到的一个关键字  null   我想程序员们都会对它绝对眼熟,不管是数据库还是前端后台,  null 绝对是一个非常常见的关键字。

       null是JavaScript语言的关键字,他表示的是一个特殊值,常常用来描述  “空值”  。对null执行 tyeof 预算,结果返回字符串  “object” ,也就是说,可以将null认为是一个特殊的对象值,含义是  “非对象”  。

       但实际上,通常认为null 是它  自有类型的唯一一个 成员 。 他可以表示数字、字符串、和对象是“无值”的。

       JavaScript 还有第二个值来表示 “空值”  ---undefined   用未定义的值表示 更深层次的“空值” 。它是变量的一种取值,表示变量没有初始化,如果要查询对象属性或数组元素的值时返回 unfinished。引用没有提供实参的函数形参的值也只会得到  undefined   。

        undefined是预定义的全局变量(它和null不一样,他不是关键字),它的值就是“未定义” 。在ECMScripgt 3中,undefined是可读/写的变量可以给它赋任意值。 这个错误在ECMScript 5中进行了修正,在这个版本中的undefined只是可读的,如果使用typeof 运算符得到 undefined 的类型,则返回“undefined”, 表明这个值是这个类型的唯一成员。

        尽管 null 和 undefined 是不同的,但它们都表示“值的空缺” ,两者往往可以互换,判断相等的运算符  “==”  认为两者是相等的  (要使用严格的相等运算符  “==”  来区分它们)。 在希望值是  布尔类型  的地方它们的值都是假值。 和false 相类似。 null和undefined 都不包含任何实行和方法 。 实际上,使用“.”和“[]”来存取这两个值得成员方法都会产生一个类型错误。

       你或许认为 undefined 是表示系统级的、出乎意料的或类似错误的值的空缺, 而null是表示程序级的、正常的或在意料之中的值的空缺。 如果你想将它们赋值给变量或者属性,或将它们作为参数传入函数,最佳选择是使用null。

以上是关于null和undefined的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript中的 undefined 和 null 的区别

js中的null和undefined

红皮书:基本概念

红皮书:基本概念

你不知道的javascript -- 数据类型

Javascript之!!运算