📌  相关文章
📜  null vs undefined - Javascript (1)

📅  最后修改于: 2023-12-03 15:03:18.345000             🧑  作者: Mango

null vs undefined - JavaScript

在 JavaScript 中,nullundefined 均表示某个变量未被赋值或者没有值。但它们之间有一些差别,本文将会介绍它们各自的含义、用法以及区别。

undefined

undefined 常常被用来表示变量尚未赋值,或者对象中不存在某个属性。例如:

let a;
console.log(a); // undefined

let obj = {};
console.log(obj.foo); // undefined

此外,函数调用时未提供参数,参数值默认为 undefined。例如:

function foo(bar) {
  console.log(bar);
}

foo(); // undefined

undefined 可以被用来判断某个变量是否被赋值。例如:

let a;
if (typeof a === 'undefined') {
  console.log('a is not defined');
}
null

null 常常被用来表示某个对象不存在或者没有值。例如:

let obj = null;

undefined 不同的是,null 是一个被赋予了特定意义的值,表示该变量的值为“空”。例如:

let a = null;
console.log(a); // null

而对于未赋值的变量,建议使用 undefined 表示其没有值。

区别

虽然 nullundefined 均表示某个变量没有值,但它们有区别:

  • 变量值为 undefined 表示变量存在,但其值为“空”;
  • 变量值为 null 表示该变量本身就不存在。

例如:

let a;
console.log(typeof a); // "undefined"

let b = null;
console.log(typeof b); // "object"

此外,当使用非严格模式下的相等运算符 == 来比较 nullundefined 时,它们会相等。但在严格模式下的相等运算符 === 中,nullundefined 是不相等的。因此,在比较变量时,建议使用严格模式下的相等运算符。例如:

let a = null;
let b;

console.log(a == b); // true
console.log(a === b); // false
结论
  • undefined 常常用来表示变量尚未被赋值,或者对象中不存在某个属性;
  • null 常常用来表示某个对象不存在或者没有值;
  • undefinednull 之间有差别,但它们的相等性在非严格模式下会被认为相等,在严格模式下不相等。