JavaScript Арифметика
JavaScript Арифметические операторы
Арифметические операторы выполняют арифметические действия с числами (литералами или переменными).
Оператор | Описание |
---|---|
+ | Добавление |
- | Вычитание |
* | Умножение |
** | Возведение в степень (ES2016) |
/ | Деление |
% | Модуль (Остаток) |
++ | Инкремент |
-- | Декремент |
Арифметические операции
Типичная арифметическая операция работает с двумя числами.
Два числа могут быть литералами:
или переменные:
или выражения:
Операторы и операнды
Числа (в арифметической операции) называются операндами.
Операция (выполняемая между двумя операндами) определяется оператором.
Операнд | Оператор | Операнд |
---|---|---|
100 | + | 50 |
Добавление
Оператор сложения (+
) складывает числа:
Вычитание
Оператор вычитания (-
) вычитает числа.
Умножение
Оператор умножения (*
) умножает числа.
Деление
Оператор деления (/
) делит числа.
Остаток
Оператор модуля (%
) возвращает остаток от деления.
В арифметике деление двух целых чисел дает частное и остаток.
В математике результатом операции по модулю является остаток от арифметического деления.
Увеличение
Оператор инкремента (++
) увеличивает числа.
Уменьшение
Оператор декремента (--
) уменьшает числа.
Возведение в степень
Оператор возведения в степень (**
) возводит первый операнд в степень второго операнда.
x ** y дает тот же результат, что и Math.pow(x,y)
:
Приоритет оператора
Приоритет операторов описывает порядок, в котором операции выполняются в арифметическом выражении.
Результат приведенного выше примера такой же, как 150 * 3, или он такой же, как 100 + 150?
Сначала выполняется сложение или умножение?
Как и в традиционной школьной математике, сначала выполняется умножение.
Умножение (*
) и деление (/
) имеют более высокий приоритет,
чем сложение (+
) и вычитание (-
).
И (как в школьной математике) приоритет можно изменить, используя круглые скобки:
При использовании скобок сначала вычисляются операции внутри скобок.
Когда многие операции имеют одинаковый приоритет (например, сложение и вычитание), они вычисляются слева направо:
Значения приоритета операторов JavaScript
Бледно-красные записи указывают на ECMAScript 2015 (ES6) или выше.
Значение | Оператор | Описание | Пример |
---|---|---|---|
20 | ( ) | Группировка выражений | (3 + 4) |
19 | . | Персона | person.name |
19 | [] | Персона | person["name"] |
19 | () | Вызов функции | myFunction() |
19 | new | Создайте | new Date() |
17 | ++ | Постфикс инкремент | i++ |
17 | -- | Постфикс декремент | i-- |
16 | ++ | Постфикс инкремент | ++i |
16 | -- | Постфикс декремент | --i |
16 | ! | Логический not | !(x==y) |
16 | typeof | Тип | typeof x |
15 | ** | Возведение в степень (ES2016) | 10 ** 2 |
14 | * | Умножение | 10 * 5 |
14 | / | Деление | 10 / 5 |
14 | % | Остаток деления | 10 % 5 |
13 | + | Добавление | 10 + 5 |
13 | - | Вычитание | 10 - 5 |
12 | << | Сдвиг влево | x << 2 |
12 | >> | Сдвиг вправо | x >> 2 |
12 | >>> | Сдвиг вправо (неподписанный) | x >>> 2 |
11 | < | Меньше, чем | x < y |
11 | <= | Меньше или равно | x <= y |
11 | > | Больше, чем | x > y |
11 | >= | Больше или равно | x >= y |
11 | in | Свойство в объекте | "PI" в Math |
11 | instanceof | Экземпляр объекта | Массив instanceof |
10 | == | Равно | x == y |
10 | === | Строго равно | x === y |
10 | != | Неравно | x != y |
10 | !== | Строго неравно | x !== y |
9 | & | Побитовое И | x & y |
8 | ^ | Побитовое НЕ ИЛИ | x ^ y |
7 | | | Побитовое ИЛИ | x | y |
6 | && | Логический И | x && y |
5 | || | Логический ИЛИ | x || y |
4 | ? : | Состояние | ? "Да" : "НЕТ" |
3 | += | Присваивание | x += y |
3 | /= | Присваивание | x /= y |
3 | -= | Присваивание | x -= y |
3 | *= | Присваивание | x *= y |
3 | %= | Присваивание | x %= y |
3 | <<= | Присваивание | x <<= y |
3 | >>= | Присваивание | x >>= y |
3 | >>>= | Присваивание | x >>>= y |
3 | &= | Присваивание | x &= y |
3 | ^= | Присваивание | x ^= y |
3 | |= | Присваивание | x |= y |
2 | yield | Функция пауза | yield x |
1 | , | Запятая | 5 , 6 |
Выражения в скобках полностью вычисляются до того, как значение будет использовано в остальной части выражения.