本章内容比较简单,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