3

JavaScript имеет assignment operators, соответствующие arithmetic из них: +=, -=, *=, /=, %=.Простая замена операторов присваивания логических в JavaScript?

JavaScript также имеет assignment operators, соответствующие bitwise из них: <<=, >>=, >>>=, &=, ^=, |=.

Но он не имеет assignment operators, соответствующего logical: ||=, &&=.

Тогда, я не могу сделать что-то вроде

aVeryLongVariableIdontWantToRepeat ||= 1; 

В this other question это объясняется, почему JS Java не имеет таких операторов. Думаю, для JS одинаково.

Но я хочу знать, если есть простой способ подражать им, избегая

aVeryLongVariableIdontWantToRepeat = aVeryLongVariableIdontWantToRepeat || 1; 
+2

Как насчет сокращения имен переменных? –

+1

Другой вопрос, на который вы ссылаетесь, - это не о JavaScript, а о Java. –

+0

@ T.J.Crowder Oh, true – Oriol

ответ

2

Нет, нет. Я чувствую, что в этом ответе должно быть больше, но на самом деле, вот и все. Самая короткая версия a = a || x - это ... a = a || x.

+0

Существует также 'a = a? a: x', но это немного дольше. – RobG

0

Существует не более короткий способ: a = a || 1 - это самый простой способ сделать это.

Однако, чтобы избежать ненужного присвоения значений (немного за счет удобочитаемости), вы также можете сделать a || (a = 1).

JSFIDDLE

var a,b='x'; 
a || (a = 1); 
b || (b = 2); 
console.log(a + ', ' + b); // Outputs "1, x" 
+1

Конечно, 'a || (a = 1) 'не короче, чем' a = a || 1', и мы можем рассчитывать на то, что двигатель не потеряет время на мертвые задания. –

1

Это может помочь вам исследовать написания кода с использованием CoffeeScript, который имеет || оператор = доступный.

Смежные вопросы