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;