JavaScript null与undefined

82 阅读1分钟

null 和 undefined 都是 JavaScript 中用来表示值不存在的两种方式,但它们之间存在一些微妙的区别:

  1. null:
    • 是一个关键字,其值是一个特殊的空值。
    • 使用 typeof 操作符检查时返回 "object",表明可以将null看成一种特殊对象,表示“没有对象
    • 在实践中,null 通常用来表示空对象或者某个变量的值为空。
    • 多数编程语言都有类似 JavaScript 的 null,比如 NULL、nil 或 None。
  1. undefined:
    • 也表示值不存在,但更多地体现了一个更深层次的不存在。
    • 变量未初始化时的默认值就是 undefined。
    • 查询不存在的对象属性或数组元素时会返回 undefined。
    • 没有明确返回值的函数或者没有传递参数的函数的返回值也是 undefined。
    • 在 typeof 操作中,返回 "undefined"。
    • 在 JavaScript 中,undefined 是一个预定义的全局常量。
  1. 相等性和布尔值:
    • 在相等性检查中(==),null 和 undefined 被认为是相等的,但需要使用全等操作符 === 区分。
    • 在需要布尔值的情况下,它们都可以被当作假值使用。
  1. 属性和方法:
    • null 和 undefined 都没有属性或方法。尝试使用点运算符或方括号访问它们的属性或方法会导致 TypeError。

在编程实践中,一些人更倾向于使用 undefined 表示系统级别的不存在,而另一些人则更喜欢使用 null 表示程序级别的不存在。总的来说,避免混用 null 和 undefined 能够让代码更加清晰易懂。