Приоритет и ассоциативность операторов в JavaScript определяют порядок вычислений в выражениях.
Приоритет операторов
Приоритет оператора определяет, какой оператор будет выполнен раньше в выражении, содержащем несколько операторов. Например, в выражении console.log(2 + 4 * 10) сначала выполняется умножение, так как оно имеет более высокий приоритет, чем сложение. Результат будет 42 (4 * 10 = 40; 2 + 40 = 42).
Скобки изменяют порядок выполнения. В выражении console.log((2 + 4) * 10) сначала выполняется сложение внутри скобок, так как скобки имеют наивысший приоритет. Результат будет 60 ((2 + 4) = 6; 6 * 10 = 60).
В примере 2 + 4 * 10 участвуют:
- Умножение (*): приоритет 14.
- Сложение (+): приоритет 13.
Приоритет операторов и переназначение переменных
Рассмотрим переназначение переменной: a = a + 5. Здесь участвуют операторы присваивания и сложения.
Приоритет присваивания (=) — 3, сложения (+) — 13. Сначала выполняется сложение, затем присваивание. Если a = 1, то после выполнения a = a + 5 значение a станет 6.
Ассоциативность операторов
Ассоциативность определяет порядок вычислений, если в выражении несколько операторов одного приоритета. Существуют два типа ассоциативности: слева направо и справа налево.
Оператор || (ИЛИ) имеет ассоциативность слева направо.
Ассоциативность оператора присваивания
Оператор присваивания (=) имеет ассоциативность справа налево. В выражении a = b = 5, сначала 5 присваивается b, затем значение b (равное 5) присваивается a. В результате, a = 5 и b = 5.
Ассоциативность оператора сложения
Оператор сложения (+) имеет ассоциативность слева направо. Выражение 4 + 5 + 6 вычисляется как (4 + 5) + 6 = 15.
Ассоциативность операторов умножения и деления
Операторы умножения (*) и деления (/) имеют одинаковый приоритет (14) и ассоциативность слева направо.
Выражение 5 * 10 / 2 вычисляется как (5 * 10) / 2 = 25. Выражение 5 * 10 / 2 / 5 вычисляется как ((5 * 10) / 2) / 5 = 5.
При работе с выражениями в JavaScript необходимо учитывать приоритет и ассоциативность операторов. Для повышения читаемости кода рекомендуется использовать скобки для явного указания порядка вычислений и избегать излишне сложных выражений.