javascrip如何判断null和undefined

发布时间:

在 javascrip中数据类型 null 只有一个值:null。关键字 null 不能用作函数或变量的名称。

包含 null 的变量包含“无值”或“无对象”。换句话说,该变量没有保存有效的数、字符串、boolean、数组或对象。可以通过给一个变量赋 null 值来清除变量的内容。

请注意,在 javascrip中,null 与 0 不相等(与在 C 和 C++ 中不同)。同时应该指出的是,javascrip中 typeof 运算符将报告 null 值为 Object 类型,而非类型 null。这点潜在的混淆是为了向下兼容。

如下情况使返回 undefined 值:

对象属性不存在,

声明了变量但从未赋值。

注意不能通过与 undefined 做比较来测试一个变量是否存在,虽然可以检查它的类型是否为“undefined”。在以下的代码范例中,假设程序员想测试是否已经声明变量 x :

// 这种方法不起作用
if (x == undefined)

    // 作某些操作
这个方法同样不起作用- 
必须检查
// 
字符串 "undefined"

if (typeof(x) == undefined)

    // 
作某些操作
// 
这个方法有效
if (typeof(x) == "undefined")

    // 
作某些操作

考虑将 undefined 值与null做比较。

someObject.prop == null;

如下情况时,比较的结果为 true,

  • 如果属性 someObject.prop 包含 null 值,
  • 如果属性 someObject.prop 不存在。
  • 要检查一个对象属性是否存在,可以使用新的in运算符:
if ("prop" in someObject)
// someObject 
有属性 'prop'