null和undefined
null 是javascript语言中的关键字,它表示一个特殊值,常用来描述“空值”,对null执行typeof计算,结果返回字符串"object",也就是说可以将null认为一个特殊的对象值,含义是“非对象”。但实际上,通常认为null是它自有类型的唯一一个成员,他可以表示数字、字符串、和对象是“无值”的。大多数编程语言和javascript一样含有null。

javascript 还有第二个值来表示值的空缺,用未定义的值表示更深层次的“空值”。它是变量的一种取值,表名变量没有被初始化,如果要查询的对象数据或者数组元素的值时返回undefined则说明这个属性或者元素不存在。如果函数没有返回任何值,则返回undefined。引用没有提供实参的函数形参的值也会得到undefined。undefined是预定义的全局变量(它和null不易,他不是关键字),它的值就是“未定义”。

在ECMAScript 3中,undefined是可读写的变量,可以给他赋任意值。

这个错误在ECMAScript 5 中做了修正,undefined在该版本中是只读的。如果使用typeof运算得到的undefined的类型,则返回“undefined”,表明这儿值i这个类型的唯一成员。
尽管null和undefined是不同的,但他们都表示“值的空缺”,两者往往可以互换的。判断相等运算符“==”认为两者是相等的,如果用“===”严格相等判断他们是不相等的 返回false。

null和undefined都不包含任何属性和方法。实际上,使用"."和"[]"来求取这两个值的成员或方法都会产生一个类型错误。

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