Математические операторы в Javascript

Многие операторы мы прекрасно знаем еще со школы: умножение*, сложение+, вычитание- и так далее. Сначала мы рассмотрим простые математические операторы и постепенно придем к специфическим аспектам на Javascript , которые не знакомы со школьных курсов математики.

Термины: «операнд», «унарный», «бинарный»

В первую очередь нужно разобраться с терминологией. Операнд – это то, к чему применяется оператор. К примеру, в умножении 5 * 2 присутствует два операнда: левый = 5, а правый = 2. В некоторых случаях их называют «аргументами».

Унарный – оператор, применяемый к одному операнду. К примеру, унарный оператор «-», меняет знак на противоположный:

let x =1;
x =-x;
alert( x );// -1, применили унарный минус

Бинарный – оператор, применяемый к двум операндам. В бинарной форме существует тот же минус:

let x =1, y =3;
alert( y — x );// 2, бинарный минус вычитает значения

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

Какие математические операторы поддерживаются:

+Сложение
Вычитание
*Умножение
/Делание
%Взятие остатка от деления
**Возведение в степень

Приоритеты операторов

Если выражение содержит несколько операторов, то порядок их выполнения определяется приоритетом. Со школьной программы нам известно, что умножение в выражении 1 + 2*2 должно выполнятся раньше сложения. Это и называется приоритетом. Таким образом, сложение имеет меньший приоритет, чем умножение.

Однако скобки важнее, чем приоритет, поэтому их можно использовать для перераспределения приоритета. Например, вы можете написать (1+2) * 2. В языке Javascript много операторов. Каждый из них имеет определенный номер приоритета. Тот оператор, чье число приоритета выше, выполняется первым. В случае равных приоритетов, порядок выполнения производится слева направо.

Приведем таблицу приоритетов в JavaScript

ПриоритетНазваниеОбозначение
17унарный плюс+
17унарный минус
16возведение в степень**
15умножение*
15деление/
13сложение+
13вычитание
3присваивание=

Примеры арифметических операций

Сложение (+)

Данный оператор объединяет строки или возвращает сумму числовых операндов.

Синтаксис

Operator: x + y.

Примеры

// Number + Number -> сложение
1+2// 3

// Boolean + Number -> сложение
true+1// 2

// Boolean + Boolean -> сложение
false+false// 0

// Number + String -> конкатенация
5+»foo»// «5foo»

// String + Boolean -> конкатенация
«foo»+false// «foofalse»

// String + String -> конкатенация
«foo»+»bar»// «foobar»

Вычитание (-)

Оператор вычитает один операнд из другого и возвращает разницу.

Синтаксис

Operator: x — y

Примеры

5-3// 2
3-5// -2
«foo»-3// NaN

Деление (/)

Оператор производит деление его операндов, где левый операнд является делимым, а правый выступает в качестве делителя.

Синтаксис

Operator: x / y

Примеры

1/2// возвращает 0.5 в JavaScript
1/2// возвращает 0 в Java
// (так числа не с плавающими точками)

1.0/2.0// возвращает 0.5 и в JavaScript и в Java

2.0/0// возвращает Infinity в JavaScript
2.0/0.0// тоже возвращает Infinity
2.0/-0.0// возвращает -Infinity в JavaScript

Умножение (*)

Оператор возвращает произведение операндов.

Синтаксис

Operator: x * y

Примеры

2*2// 4
-2*2// -4
Infinity*0// NaN
Infinity*Infinity// Infinity
«foo»*2// NaN

Остаток от деления (%)

Данный оператор возвращает целый остаток от деления левого операнда на правый. Возвращаемое значение всегда получает знак делимого, а не делителя. Он использует встроенную функцию modulo, для получения результата, которая выступает целочисленным остатком деления var1 на var2 — например— var1 modulo var2.

Синтаксис

Оператор: var1 % var2

Примеры

12%5// 2
-1%2// -1
NaN%2// NaN
1%2// 1
2%3// 2
-4%2// -0
5.5%2// 1.5

Возведение в степень (**)

Оператор возвращает результат первого операнда в степень. это, var1var2, в прошлом выражении, где var1 и var2 — переменные. Он право ассоциативен. a ** b ** c равно a ** (b ** c).

Синтаксис

Оператор: var1 ** var2

Замечания

Во многих языках, таких как Python и PHP и других, есть оператор возведения возведения в степень (обычно ** или ^), оператор определён имеющим приоритет выше, чем у унарных операторов, таких как унарный + и унарный -, но есть некоторые исключения.

К примеру, в Bash оператор ** создан с приоритетом ниже, чем у унарных операторов. В Javascript невозможно написать двусмысленное выражение, то есть вы не можете ставить унарный оператор (+/-/~/!/delete/void/typeof) перед базовым числом.

-2**2;
// 4 в Bash, -4 в других языках.
// Это некорректно в JavaScript, т.е. операция двухсмыслена.

-(2**2);
// -4 в JavaScript, намерения автора однозначны.
Примеры
2**3// 8
3**2// 9
3**2.5// 15.588457268119896
10**-1// 0.1
NaN**2// NaN

2**3**2// 512
2**(3**2)// 512
(2**3)**2// 64

Изменим знак результата возведения в степень:

-(2**2)// -4

Несильная установка основания как отрицательного числа:

(-2)**2// 4

Инкремент (++)

Оператор увеличивает операнд на единицу и возвращает значение.

  • Если операция применяется как постфикс, с оператором после операнда (к примеру, x++), значение операнда возвращается, а потом увеличивается на единицу.
  • Если применяется префиксная форма с оператором перед операндом (к примеру, ++x), значение операнда возвращается увеличенным на единицу.

Синтаксис

Оператор: x++ или ++x

Примеры

// Постфиксный
var x =3;
y = x++;// y = 3, x = 4

// Префиксный
var a =2;
b =++a;// a = 3, b = 3

Декремент (—)

Операция декремента уменьшает на 1 свой операнд и возвращает значение.

  • Если операция применяется как постфикс (например, x—), значение операнда возвращается, после чего уменьшается на единицу.
  • Если применяется префиксная форма (например, —x), значение операнда возвращается уменьшенным на единицу.

Синтаксис

Оператор: x— или —x

Примеры

// Постфиксный
var x =3;
y = x—;// y = 3, x = 2

// Префиксный
var a =2;
b =—a;// a = 1, b = 1

Унарный минус (-)

Унарный минус ставится перед операндом и возвращает его математическое отрицание.

Синтаксис

Оператор: -x

Примеры

var x =3;
y =-x;// y = -3, x = 3

Унарный плюс (+)

Оператор предшествует своему операнду и оценивает его, пытается преобразовать его в число, если он им не является. Также унарное отрицание (-) конвертирует не числа, унарный плюс — предпочитаемый и быстрейший способ конвертирования чего-либо в число потому, что он не выполняет никаких операций с числом. Он может конвертировать строковые представления целых и чисел с плавающей точкой, а также нестроковые значения true, false и null.

Поддерживаются числа в десятичном и шестнадцатеричном (с префиксом «0x») формате. Также поддерживаются отрицательные числа (но не 16-ричные). Если он не может вычислить конкретное значение, выполнится как NaN.

Синтаксис

Оператор: +x

Примеры

+3// 3
+»3″// 3
+true// 1
+false// 0
+null// 0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *