Movatterモバイル変換


[0]ホーム

URL:


  1. Веб-технологии для разработчиков
  2. JavaScript
  3. Справочник по JavaScript
  4. Выражения и операторы
  5. Приоритет операторов

This page was translated from English by the community.Learn more and join the MDN Web Docs community.

View in EnglishAlways switch to English

Приоритет операторов

Приоритет операторов определяет порядок, в котором операторы выполняются. Операторы с более высоким приоритетом выполняются первыми.

Интерактивный пример

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). Операторы присваивания являются право-ассоциативными, так что вы можете написать:

js
a = b = 5;

с ожидаемым результатом, чтоa иb будут равны 5. Это происходит, потому что оператор присваивания возвращает тот результат, который присваивает. Сначалаb становится равным 5, затемa принимает значениеb.

Примеры

js
3 > 2 && 2 > 1;// вернёт true3 > 2 > 1;// вернёт false, потому что 3 > 2 возвращает true, в свою очередь true > 1 вернёт false// Добавление скобок значительно повышает читаемость выражения: (3 > 2) > 1

Таблица

Операторы упорядочены с самого высокого (18) до самого низкого (1) приоритета.

Обратите внимание, чтоspread-оператор (...) намеренно не включен в таблицу, потому что он вообще не является оператором и правильно говоритьspread-синтаксис. Подробнее можно почитать вответе на Stack Overflow (en).

ПриоритетТип оператораАссоциативностьКонкретные операторы
18Группировкане определено( … )
17Доступ к свойствамслева направо… . …
Доступ к свойствам с возможностью вычисления… [ … ]
new (со списком аргументов)не определеноnew … ( … )
Вызов функциислева направо… ()
Оператор опциональной последовательности (?.)?.
16new (без списка аргументов)справа налевоnew …
15Постфиксный инкрементне определено… ++
Постфиксный декремент… --
14Логическое отрицание (!)справа налево! …
Побитовое отрицание (~)~ …
Унарный плюс+ …
Унарный минус- …
Префиксный инкремент++ …
Префиксный декремент-- …
typeoftypeof …
voidvoid …
deletedelete …
awaitawait …
13Возведение в степень (**)справа налево… ** …
12Умножение (*)слева направо… * …
Деление (/)… / …
Остаток от деления (%)… % …
11Сложение (+)слева направо… + …
Вычитание (-)… - …
10Побитовый сдвиг влево (<<)слева направо… << …
Побитовый сдвиг вправо (>>)… >> …
Сдвиг вправо с заполнением нулей (>>>)… >>> …
9Меньше (<)слева направо… < …
Меньше или равно (<=)… <= …
Больше (>)… > …
Больше или равно (>=)… >= …
in… in …
instanceof… instanceof …
8Равенство (==)слева направо… == …
Неравенство (!=)… != …
Строгое равенство (===)… === …
Строгое неравенство (!==)… !== …
7Побитовое «И» (&)слева направо… & …
6Побитовое исключающее «ИЛИ» (^)слева направо… ^ …
5Побитовое «ИЛИ» (|)слева направо… | …
4Логическое «И» (&&)слева направо… && …
3Логическое «ИЛИ» (||)слева направо… || …
Оператор нулевого слияния (??)… ?? …
2Присваиваниесправа налево… = …
… += …
… -= …
… **= …
… *= …
… /= …
… %= …
… <<= …
… >>= …
… >>>= …
… &= …
… ^= …
… |= …
… &&= …
… ||= …
… ??= …
Условный (тернарный) операторсправа налево… ? … : …
yieldсправа налевоyield …
yield*yield* …
1Запятая / Последовательностьслева направо… , …

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp