下面的表格由 JS 读取数据后现场渲染——数值、类型、真假值都是真实运行结果。
| 值 | typeof 结果 | 说明 |
|---|
字符串、数字、布尔等「原始值」比较的是内容:
'ada' === 'a' + 'da' // true
对象、数组等「引用值」比较的是「是不是同一个对象」:
{a:1} === {a:1} // false —— 内容一样,但是两个盒子
const c = a // 传递的不是内容,是「同一个盒子」的地址
被当作条件时自动转成布尔,只有下面这些是假(falsy),其余一切为真——包括空数组 [] 和空对象 {}。
| 值 | Boolean(值) |
|---|
所以 if (list.length) 比 if (list) 靠谱:空数组也是真,但它的 length 是 0。