Арифметические операции в 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.
Как можно заметить, данные операторы присваивания призваны сократить написание арифметических операций. Соответственно если данных простых операций в теле программ много то такой способ записи может заметно сократить вес кода программы.