首页 > 代码库 > null和undefined
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