相等、短路、可选链:三组最容易写错的小符号

[迷你控制台]

一、== 会偷偷做类型转换,=== 不会

表达式=====发生了什么

结论:日常一律用 === 和 !==。唯一保留 == 的习惯用法是 x == null——它同时命中 null 和 undefined,读作「x 是空的吗」。

二、逻辑运算的短路:左边就决定了,右边不执行

true  && run()   // run 执行(左边为真,结果取决于右边)
false && run()   // run 不执行(左边为假,结果已确定)
true  || run()   // run 不执行(左边为真,结果已确定)
false || run()   // run 执行

三、|| 与 ?? 做默认值:0 和空串怎么办

input 为空字符串 '' 时:
'' || '游客'   // '游客' —— '' 是假值,被兜底了

数值 0 想保留时:
0 || 100   // 100  ✗ 0 是假值,被当成「没有值」
0 ?? 100   // 0    ✓ ?? 只把 null / undefined 当成「没有值」

四、?. 可选链:深层访问不再逐层判断

五、逻辑赋值:??= 只在「空」时写入

const settings = { theme: null, fontSize: 14 }

settings.theme    ??= 'light'   // null → 写入 'light'
settings.fontSize ??= 16        // 14 已有值 → 保持 14
// ||= 与 &&= 同理,只是判断条件换成 || / &&
// 最常见的用途:补配置项的默认值,而不覆盖用户已设的值