How JavaScript Works 学习笔记 —— How Bottom Value Works

157 阅读1分钟

本章内容比较简单,Bottom Value 简单的说就是描述数据不存在的数据,主要就是 undefined, null,NaN (某种程度算数字的 bottom value)

其实也就是聊聊该如何使用 undefined 和 null。先说结论,多数情况只使用 undefined 而 不应该是用 null。

其实,从某种程度上说,null 更加合适:

  • null 比 undefined 更短
  • null 表示内容为 null 的值,undefined 从名字上表示一个字段的值为没有定义(很自相矛盾)
  • typeof null === "object"

然而,我们之所以更加推荐用 undefined 是因为某种程度上说,JS 自己是将 undefined 当成 null 来用的,比如:

  • var, let, 没有赋值,默认是 undefined (是的,定义了一个内容是“为定义”的值)
  • function 的参数如果没有传,默认也是 undefined
  • 如果尝试去取 object 不存在的字段,默认也是 undefined
  • 数组也类似
  • typeof null === "object" 但是 null 却不是一个 Object... (null 并没有继承,Object.prototype) 所以说,JS 中,一个没有内容的元素,都是用 undefined 来表示。当然,其实,假设,如果有一个 frozen empty object 来表示空 object 的话,似乎一切就完美了,比如:
const user = {
  firstName: 'zhangsan'
}

要取 firstName 的时候就不需要写成:

user && user.firstName
或者:
user?.firstName