JavaScript: Приоритет и ассоциативность операторов

Приоритет и ассоциативность операторов в 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 участвуют:

  1. Умножение (*): приоритет 14.
  2. Сложение (+): приоритет 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 необходимо учитывать приоритет и ассоциативность операторов. Для повышения читаемости кода рекомендуется использовать скобки для явного указания порядка вычислений и избегать излишне сложных выражений.

Что будем искать? Например,программа