&&=

  1. let num1 = 5;
  2. let num2 = 10;
  3. num1 &&= num2;
  4. console.log(num1); // 10
  5. // 等价于
  6. // num1 && (num1 = num2);
  7. // if (num1) {
  8. // num1 = num2;
  9. // }

||=

  1. let num1;
  2. let num2 = 10;
  3. num1 ||= num2;
  4. console.log(num1); // 10
  5. // 等价于
  6. // num1 || (num1 = num2);
  7. // if (!num1) {
  8. // num1 = num2;
  9. // }

??=

空值合并运算符 ?? 只会在左边的值严格等于 null 或 undefined 时起作用

  1. let num1;
  2. let num2 = 10;
  3. let num3 = null; // undefined
  4. num1 ??= num2;
  5. console.log(num1); // 10
  6. num1 = false;
  7. num1 ??= num2;
  8. console.log(num1); // false
  9. num3 ??= 123;
  10. console.log(num3); // 123
  11. // 等价于
  12. // num1 ?? (num1 = num2);
  13. // ?? => https://www.yuque.com/wuchendi/fe/aai5td