JS中undefined和null的区别
loyalvi Lv7

JS中undefined和null的区别

在 JS 中 null 和 undefined 都表示空,但它们还是存在一定区别的, null 表示不存在 、 没有,而 undefined 表示未定义 。 底层实现时, null 一般会指向一个全 0 的地址,当 然,这个地址是无法访问的,当遇到这种情况时就会当作不存在来处理; undefined 则表示根本不存在,或者还没有初始化,所以一个变量可以赋值为 null ,但不可赋值为 undefined 。
在JavaScript中,nullundefined 是两个特殊的值,它们都表示“没有值”,但它们之间有一些关键的区别:

  1. 定义和用途
    • undefined:表示变量已声明但尚未被赋值。它是大多数未声明变量的默认值,也是函数没有返回值时的默认返回值。
    • null:表示一个变量被赋予了“空”的值。它是一个表示空值的特殊关键字,常用于初始化变量,或者在某些情况下表示一个函数应该返回一个空值。
  2. 类型
    • undefined:它的类型是 undefined
    • null:它的类型是 object(这是一个历史错误,尽管在现代JavaScript中,typeof null 返回的是 object,但实际上 null 不是一个对象)。
  3. 值比较
    1. null 和 undefined 在使用 ==操作符时被认为是相等的,因为它们都是“空”的值
      • 但是,它们在使用 ===(严格相等)操作符时是不相等的,因为它们是不同的类型。
  4. 转换
    • nullundefined 被转换为字符串时,它们都变成空字符串。
    • nullundefined 被转换为数字时,它们都变成 0
  5. 对象属性
    • 如果你尝试访问一个对象的属性,而该属性没有被定义,那么返回的值是 undefined
    • 如果你尝试访问一个对象的属性,而该属性被明确设置为 null,那么返回的值就是 null
  6. 函数参数
    • 如果一个函数参数没有被传递,那么该参数的值是 undefined
    • 如果你想要在函数中检查一个参数是否被传递,你可以检查它是否严格等于 undefined
  7. JavaScript引擎的内部处理
    • 在JavaScript引擎的内部处理中,undefined 是一个全局变量,而 null 是一个字面量。
      在实际编程中,选择使用 null 还是 undefined 通常取决于你的具体需求和代码风格。例如,你可能会选择使用 null 来表示一个空的或无效的引用,而使用 undefined 来表示一个变量尚未被赋值。
由 Hexo 驱动 & 主题 Keep
访客数 访问量