Операторы присваивания и сокращенная арифметика в JavaScript

В части про инициализацию переменных мы затронули тему присваивания значения какой-либо переменной. В этой части мы более подробнее познакомимся с оператором присваивания.

Оператор =

Оператор = в JavaScript используется для присваивания значения переменной, например:

let a = 5;

это наиболее используемое и самое понятное применение оператора =.

Возврат значения

Оператор = также и возвращает значение, что позволяет создавать вот такие интересные языковые конструкции:

let a = 5; 
let c = a + (b = 7 + 1 - (d = a + 2));

Вычисление значения c здесь будет происходить следующим образом:

  1. вычисляем значение d = a + 2 получим 5+2 = 7
  2. полученное значение присваивается переменной d и возвращается оператором =. Теперь всё выражение можно представить как c = a + (b = 7 + 1 - d)
  3. вычисляем значение b = 7 + 1 - 7 получим 1
  4. полученное значение присваивается переменной b и вновь возвращается оператором =
  5. вычисляется значение переменной c как a + 1 = 6
  6. полученное значение присваивается переменной c

Конечно, использование такой возможности оператора = как возврат значения лучше часто не использовать, так как такой подход не сделает Ваш код более понятным, но знать об особенности стоит.

Цепочка присваиваний

Также, можно, используя оператор = создавать цепочки присваивания значений:

let a = b = c = 3 * 3;

Этот пример будет работать аналогично предыдущему и читать его следует справа на лево. То есть, вначале будет вычислено выражение 3 * 3, затем полученное значение будет присвоено переменной c, затем — значение переменной с будет присвоено переменной b и, наконец, значение переменной b будет присвоено переменной a.  В более читаемом виде этот код мог бы выглядеть следующим образом:

let c = 3 * 3; 
let a = c;
let b = c;

Суть не меняется — все переменные получают значение 9, но код становится понятнее.

Сокращенная арифметика в JavaScript

Достаточно часто нам будет необходимо изменить значение переменной и сохранить новое значение в ней же, например:

let c = 3; 
с = с + 3;//6

Здесь мы вначале прибавили к значению переменной c значение 3 (выполнили выражение справа), а, затем, полученное значение опять присвоили переменной с. Это довольно распространенная ситуация в программировании. В JavaScript можно использовать сокращенные арифметические операции с одновременным присваиванием нового значения переменной. В общем виде такое действие можно записать следующим образом:

[переменная] [оператор]= [значение]

где [переменная] — это переменная над значением которой производится какое-либо арифметическое действие; [оператор] — бинарный оператор, [значение] — значение, используемое в операции.

Например, выражение выше мы бы могли переписать следующим образом:

с += 3;// с = с + 3

Аналогичным образом можно использовать и другие арифметические операторы:

let c = 3; 
c += 3;// с = с + 3 = 6
c /= 3;// с = с / 3 = 6 / 3 = 2
c %= 2;// c = c % 2 = 0;
console.log(c);

При подобной краткой записи мы также можем использовать в выражениях справа любые другие операции, например

let c = 3; 
let a = 2;
c += a / 2; //c = c + 2 / 2 = 4

Здесь, в примере, вначале вычисляется выражение справа, то есть a/2, а затем выполняется оператор +=, то есть c + 1. В итоге, получим для переменной с значение 4.

Итого

Оператор присваивания (=) в JavaScript присваивает и возвращает значение переменной. Также, оператор = может использоваться для сокращенной записи арифметических операций с одновременным присваиванием значение переменной.

Оставьте комментарий