Приоритет выполнения операторов в JavaScript
Осветим вопрос приоритета выполнения основных операторов в JavaScript.
Все операторы делятся на группы, у которых различный приоритет. Те, у которых приоритет выше, выполняются первыми.
1 — Самым высоким приоритетом обладают операторы группировки. В данном случае это скобки «(
» и «)
»
i = (a + b) * c
( В данном случае группировка имеет более высокий приоритет чем умножение,
поэтому сначала выполнятся все операции внутри скобок )
2 — За ними следуют операторы постфиксного (указанного ПОСЛЕ переменной) инкремента и декремента
a--
// Постфиксный декремент
b++
// Постфиксный инкремент
3 — Следующими по приоритету идут префиксные инкремент и декремент а также логическое отрицание
--x
// Префиксный декремент
++y
// Префиксный инкремент
!z
// Логическое отрицание
4 — За ними идет возведение в степень
x = y ** z
// Возведение в степень
5 — Следующая группа: умножение, деление и остаток от деления
x = y * z
// Умножение
x = y / z
// Деление
x = y % z
// Остаток от деления
6 — Еще меньшим приоритетом обладают операции сложения и вычитания
x = y + z
// Сложение
x = y - z
// Вычитание
7 — Следом идут операции сравнения
>
// Больше
>=
// Больше или равно
<
// Меньше
<=
// Меньше или равно
8 — Затем операции равенства
==
// Равно
!=
// Не равно
===
// Строго равно
!==
// Строго не равно
9 — Логические операции
&
// Побитовое И
|
// Побитовое ИЛИ
&&
// Логическое И
||
// Логическое ИЛИ
10 — И наконец последними выполняются операции присваивания
=
// Присваивание
+=
// Присваивание со сложением
-=
// Присваивание с вычитанием
**=
// Присваивание с возведением в степень
*=
// Присваивание с умножением
/=
// Присваивание с делением
%=
// Присваивание с остатком от деления
Например при a = 3
, b = 6
и x = 2
выражение:
(x += (++a + b / a * b - ++b % x ** x)) === 11 + true;
даст нам true