未定义的值

更新:2007 年 11 月

在 JScript 中,可以声明一个变量而不为其赋值。一个经类型批注的变量假定该类型的默认值。例如,数值类型的默认值为零,String 数据类型的默认值为空字符串。然而,没有指定数据类型的变量有一个 undefined 初始值和一个 undefined 数据类型。同样,访问不存在的 expando 对象属性或数组元素的代码将返回一个 undefined 值。

使用 Undefined 值

若要确定变量或对象属性是否存在,请将它与 undefined 关键字(仅对声明变量或属性有效)作比较,或检查其类型是否为“undefined”(即使对未声明变量或属性也有效)。在下面的代码示例中,假定程序员试图测试是否已声明了变量 x:

// One method to test if an identifier (x) is undefined.
// This will always work, even if x has not been declared.
if (typeof(x) == "undefined"){
   // Do something.
}
// Another method to test if an identifier (x) is undefined.
// This gives a compile-time error if x is not declared.
if (x == undefined){
   // Do something.
}

检查是否未定义某个变量或对象属性的另一种方法是:将其值与 null 作比较。包含 null 的变量不包含值或对象。换句话说,它不包含有效的数字、字符串、布尔值、数组或对象。通过为变量赋 null值可以清除变量的内容(不删除变量)。注意,使用相等运算符 (==) 时,undefined 和 null 值的比较结果为相等。

说明:

在 JScript 中,使用相等运算符时,null 与 0 的比较结果不相等。此行为与其他语言(如 C 和 C++)不同。

在本示例中,测试 obj 对象,看它是否有 prop 属性。

// A third method to test if an identifier (obj.prop) is undefined.
if (obj.prop == null){
   // Do something.
}

该比较结果为 true

  • 如果 obj.prop 属性包含值 null

  • 如果 obj.prop 属性不存在

还有另外一种方法可以检查某个对象属性是否存在。如果指定的属性在所提供的对象中,则 in 运算符返回 true。例如,如果 prop 属性在 obj 对象中,下面的代码测试 true

if ("prop" in someObject)
// someObject has the property 'prop'

若要从某个对象中移除属性,可使用 delete 运算符。

请参见

参考

null 标识符

undefined 属性

in 运算符

delete 运算符

其他资源

JScript 变量和常数

JScript 中的数据

JScript 数据类型

数据类型 (JScript)