null 和 undefined 都是 JavaScript 中用来表示值不存在的两种方式,但它们之间存在一些微妙的区别:
- null:
-
- 是一个关键字,其值是一个特殊的空值。
- 使用 typeof 操作符检查时返回 "object",表明可以将null看成一种特殊对象,表示“没有对象
- 在实践中,null 通常用来表示空对象或者某个变量的值为空。
- 多数编程语言都有类似 JavaScript 的 null,比如 NULL、nil 或 None。
- undefined:
-
- 也表示值不存在,但更多地体现了一个更深层次的不存在。
- 变量未初始化时的默认值就是 undefined。
- 查询不存在的对象属性或数组元素时会返回 undefined。
- 没有明确返回值的函数或者没有传递参数的函数的返回值也是 undefined。
- 在 typeof 操作中,返回 "undefined"。
- 在 JavaScript 中,undefined 是一个预定义的全局常量。
- 相等性和布尔值:
-
- 在相等性检查中(==),null 和 undefined 被认为是相等的,但需要使用全等操作符 === 区分。
- 在需要布尔值的情况下,它们都可以被当作假值使用。
- 属性和方法:
-
- null 和 undefined 都没有属性或方法。尝试使用点运算符或方括号访问它们的属性或方法会导致 TypeError。
在编程实践中,一些人更倾向于使用 undefined 表示系统级别的不存在,而另一些人则更喜欢使用 null 表示程序级别的不存在。总的来说,避免混用 null 和 undefined 能够让代码更加清晰易懂。