ES12: нулевые операторы и объекты объединения

Например, у меня есть такой объект:

      const a = {
 b: "value"
 // and also what about: c: '', or c: 0, c: false ?
};

И я хотел бы назначить своему объекту клавишу 'c', но только если она не была назначена раньше.

Обычно мы делаем что-то вроде этого:

      if (!a.c) {
  a.c = 1; // or without { } for a bit shorty way.
}

Но стандарты ES12 вводят немного больше новых нулевых операторов объединения и логических операторов, поэтому может кто-нибудь объяснить мне, как это помогает мне заменить приведенный выше пример и как насчет null а также 0 как поведение числа (пустая строка и false поведение тоже плюс)?

Настоящий вопрос, стоящий за этим, заключается в следующем: может ли использование этой новой функции действительно охватить все случаи и заменить приведенный выше пример в реальных производственных проектах, или все же лучше остаться более традиционным способом. (Конечно, все дело в синтаксическом сахаре, но я хотел бы узнать больше о покрытии)

1 ответ

Логическое нулевое назначение ??=присваивает значение только в том случае, если значение левой стороны равно или или .

      a.c ??= 1;

Если вы хотите заменить какое-либо ложное значение, например '', 0, false, null, undefined, вы можете использовать логическое ИЛИ ||=.

      a.c ||= 1;
Другие вопросы по тегам