Skip to content

null和undefined的区别

undefined

  • 当声明了一个变量但未初始化它时,它的值为undefined
  • 当访问对象属性或数组元素中不存在的属性或索引时,也会返回undefined
  • 当函数没有返回值时,返回undefined
  • 如果函数的参数没有传递或没有被提供值,函数内的对应参数的值为undefined
js
let x
console.log(x) // undefined

const obj = {}
console.log(obj.a) // undefined

function foo() {}
console.log(foo()) // undefined

function add(a, b) {
  return a + b
}

console.log(add(1, 2)) // 3
console.log(add(1)) // NaN

null

  • null是一个特殊的关键字,表示一个空对象指针
  • 它通常用于显示地只是一个变量或属性的值是空的,null是一个赋值的操作,用于表示“没有值”或“空”
  • null通常需要开发人员主动分配给变量,而不是自动分配的默认值
  • null是原型链的顶层,所有对象都是继承自Object原型对象,Object原型对象的原型是null
js
const a = null
console.log(a) // null

const obj = { a: 1 }
const proto = obj.__proto__
console.log(proto.__proto__) // null