Арифметические операции в JavaScript

Арифметические операции в JS

Всем со школы известны простейшие арифметические операции такие как: сложение, вычитание, умножение и деление. В языке JS все они так же присутствуют. Ниже приведены основные арифметические операции языка:

  • сложение — + (пример: var rs = per1+per2;);
  • конкатенация строк — + (пример: var rs = per1+per2;);
  • вычитание —  (пример: var rs = per1-per2;);
  • умножение — * (пример: var rs = per1*per2;);
  • обычное деление — / (пример: var rs = per1/per2;);
  • деление по модулю — % (пример: var rs = per%per2;);
  • единичный инкремент — ++ (пример: result++ или ++result;);
  • единичный декремент —  (пример: result— или —result;).

Сложение и конкатенация.

Для сложения и конкатенации (склейки) строк используется один и тот же оператор (+). Следует помнить что если это действие выполняется над числами то произойдет сложение и в итоге мы получим сумму этих чисел. Но, если одна из переменных будет строкой то произойдет не сложение а склейка данных переменных.  Это хорошо видно на примере:

var itog1 = 30 + 21; //результатом данной операции будет число 51

var itog2 = 30 + "21"; // результатом будет строка "3021"

var itog3 = "30" + "21"; // результатом будет строка "3021"

Инкремент и декремент

Данные операции хоть и являются простыми, но имеют особенность, которая может поставить начинающего программиста в тупик. Написании данных операций может быть двух видов:

  • ++itog  или  itog++;
  • —itog1  или  itog1—;

На первый взгляд они похожи, но есть между данными способами написания кардинальное отличие. Итак, если знаки инкремента(++) или декремента(—) стоят перед переменной, то вначале выполняется увеличение\уменьшение данной переменной на 1. А, в случае, если знаки инкремент/декремент стоят после имени переменной то вначале будут выполняться арифметические операции а только после них переменная будет увеличена/уменьшена на 1.

Например:

var itog = 2; 

var itog2 = 4;  


var summa1 = ++itog; // результат будет 3

var summa2 = itog2 + ++itog1; // результатом будет summa2 = 7, а переменная itog1 = 3

var summa3 = itog2 + itog1++; // результатом будет summa3 = 6, а переменная itog1 = 3

Как можно видеть по последнему примеру, переменная itog1 увеличилась только после того как посчиталась переменная summa3 . А в предпоследней строке сначала увеличилась переменная itog1 . а только потом произошел подсчет переменной summa2. 

Разные типы операндов

Мы привыкли что арифметические операции совершаются в основном над числами. Но в программировании так бывает не всегда. Иногда, в коде может появиться операция над различными типами переменных. Например сложение числа и строки, и прочее.

Итак рассмотрим как будут проводиться арифметические операции над разными типами данных:

  • Number и Boolean — в данном случае логический операнд приводится к числовому значению (если истина то 1, если ложь то 0);
  • Number и Number — оба операнда числовые, значит выполняется обычная арифметическая операция;
  • Boolean и Boolean  — оба операнда логические, значит они оба преобразуются в числа (истина — 1 , ложь — 0);
  • Boolean и String — в данном случае логический операнд преобразуется в строку;
  • Number и String — как мы уже рассматривали, в данном случае число преобразуется в строку.

Операторы присваивания

В языке JavaScript существуют операторы присваивания, которые перед тем как присвоить переменной какое либо значение выполняют арифметические операции над присваиваемым  элементом и элементом которому присваивают.

  • res1+=itog1 — данная запись это сокращение записи: res1 = res1 + itog1;
  • res2-=itog2 — данная запись это сокращение записи: res2 = res2 — itog2;
  • res3*=itog3 — данная запись аналогична записи: res3 = res3*itog3;
  • res4/=itog4 — данная запись аналогична записи: res4 = res4 / itog4;
  • res5%=itog5 — данная запись аналогична записи: res5 = res5 % itog5.

Как можно заметить, данные операторы присваивания призваны сократить написание арифметических операций. Соответственно если данных простых операций в теле программ много то такой способ записи может заметно сократить вес кода программы.