This page was translated from English by the community.Learn more and join the MDN Web Docs community.
Приоритет операторов
Приоритет операторов определяет порядок, в котором операторы выполняются. Операторы с более высоким приоритетом выполняются первыми.
In this article
Интерактивный пример
console.log(3 + 4 * 5); // 3 + 20// Expected output: 23console.log(4 * 3 ** 2); // 4 * 9// Expected output: 36let a;let b;console.log((a = b = 5));// Expected output: 5Ассоциативность
Ассоциативность определяет порядок, в котором обрабатываются операторы с одинаковым приоритетом. Например, рассмотрим выражение:
a OP b OP c
Левая ассоциативность (слева направо) означает, что оно обрабатывается как(a OP b) OP c, в то время как правая ассоциативность (справа налево) означает, что они интерпретируются какa OP (b OP c). Операторы присваивания являются право-ассоциативными, так что вы можете написать:
a = b = 5;с ожидаемым результатом, чтоa иb будут равны 5. Это происходит, потому что оператор присваивания возвращает тот результат, который присваивает. Сначалаb становится равным 5, затемa принимает значениеb.
Примеры
3 > 2 && 2 > 1;// вернёт true3 > 2 > 1;// вернёт false, потому что 3 > 2 возвращает true, в свою очередь true > 1 вернёт false// Добавление скобок значительно повышает читаемость выражения: (3 > 2) > 1Таблица
Операторы упорядочены с самого высокого (18) до самого низкого (1) приоритета.
Обратите внимание, чтоspread-оператор (...) намеренно не включен в таблицу, потому что он вообще не является оператором и правильно говоритьspread-синтаксис. Подробнее можно почитать вответе на Stack Overflow (en).