Синтаксис JavaScript Справочник JavaScript JSON Коды клавиш События Строгий режим

JavaScript: Операторы

Оператор – это символ(ы) или ключевое слово, благодаря которому производятся некоторые виды вычислений с участием одного или нескольких значений. Значения, располагающиеся слева и справа от оператора, называются операндами. Оператор с одним операндом называется унарным, с двумя – бинарным, с тремя – тернарным.

Операторы могут автоматически преобразовывать типы своих операндов по мере необходимости. Например, оператор умножения * ожидает получить числа, поэтому выражение "2" * "3" считается вполне допустимым благодаря тому, что интерпретатор выполнит неявное преобразование строк в числа.

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

Приоритет оператора – это свойство оператора, влияющее на очерёдность его выполнения в выражении с несколькими различными операторами при отсутствии явного указания на порядок их вычисления. Операторы с более высоким приоритетом выполняются раньше операторов с более низким приоритетом.

В колонке Оператор троеточием показано расположение операндов относительно оператора.

В колонке А указана ассоциативность оператора. Ассоциативность - это порядок, в котором обрабатываются операторы с одинаковым приоритетом. Например, оператор вычитания имеет ассоциативность слева направо, поэтому следующие два выражения эквивалентны:

x - y - z
(x - y) - z

Оператор присваивания имеет ассоциативность справа налево, поэтому следующие два выражения эквивалентны:

w = x = y = z
w = (x = (y = z))

В колонке О указано количество операндов.

В колонке Типы значений перед стрелкой указаны ожидаемые типы операндов, а после стрелки тип возвращаемого значения.

lval (сокращение от left value) – левостороннее выражение. Это исторический термин, обозначающий выражение, которое может присутствовать слева от оператора присваивания. Левосторонними выражениями являются: переменные, свойства объектов и элементы массивов.

В таблице ниже операторы перечислены в порядке уменьшения приоритета, горизонтальные линии отделяют группы операторов с разным уровнем приоритета.

Оператор Тип оператора А О Типы значений
(…) Группировка отсутствует
1 любое→любое
… . …
… […]
new … ( )
Оператор доступа
Оператор доступа
new (со списком аргументов)
слева направо
слева направо
отсутствует
2
2
1
lval, lval → любой
lval, строка или число → любой
конструктор → объект
… ( )
new …
Вызов функции
new (без аргументов)
слева направо
справа налево
1
1
функция → любой
конструктор → объект
… ++
… --
Постфиксный инкремент
Постфиксный декремент
отсутствует
отсутствует
1
1
lval → число
lval → число
! …
~ …
+ …
- …
++ …
-- …
delete …
typeof …
void …
Логическое НЕ (инверсия)
Побитовое НЕ (инверсия)
Унарный плюс
Унарный минус
Префиксный инкремент
Префиксный декремент
Удаление
Определяет тип данных
Возврат неопределённого значения
справа налево
справа налево
справа налево
справа налево
справа налево
справа налево
справа налево
справа налево
справа налево
1
1
1
1
1
1
1
1
1
любое → булево
целое → целое
число → число
число → число
lval → число
lval → число
lval → булево
любое → строка
любое → undefined
… ** …
… * …
… / …
… % …
Возведение в степень
Умножение
Деление
Деление с остатком
справа налево
слева направо
слева направо
слева направо
2
2
2
2
число, число → число
число, число → число
число, число → число
число, число → число
… + …
… - …
… + …
Сложение
Вычитание
Конкатенация
слева направо
слева направо
слева направо
2
2
2
число, число → число
число, число → число
строка, строка → строка
… << …
… >> …
… >>> …
Сдвиг битов влево
Сдвиг битов вправо с сохранением знака
Сдвиг битов вправо с заполнением нулями
слева направо
слева направо
слева направо
2
2
2
целое, целое → целое
целое, целое → целое
целое, целое → целое
… < …
… <= …
… > …
… >= …
… in …
… instanceof …
Меньше чем
Меньше или равно
Больше чем
Больше или равно
Проверка наличия свойства
Проверка на принадлежность к данному типу
слева направо
слева направо
слева направо
слева направо
слева направо
слева направо
2
2
2
2
2
2
число, число → булево
число, число → булево
число, число → булево
число, число → булево
строка, объект → булево
объект, конструктор → булево
… == …
… != …
… === …
… !== …
Равно
Не равно
Строго равно
Строго не равно
слева направо
слева направо
слева направо
слева направо
2
2
2
2
любое, любое → булево
любое, любое → булево
любое, любое → булево
любое, любое → булево
… & … Побитовое И слева направо 2 целое, целое → целое
… ^ … Побитовое ИСКЛЮЧАЮЩЕЕ ИЛИ слева направо 2 целое, целое → целое
… | … Побитовое ИЛИ слева направо 2 целое, целое → целое
… && … Логическое И слева направо 2 любое, любое → любое
… || … Логическое ИЛИ слева направо 2 любое, любое → любое
… ? … : … Тернарный оператор справа налево 3 булево, любое, любое → любое
… = …
… += …
… -= …
… **= …
… *= …
… /= …
… %= …
… <<= …
… >>= …
… >>>= …
… &= …
… ^= …
… |= …
Присваивание
Операция с присваиванием
Операция с присваиванием
Операция с присваиванием
Операция с присваиванием
Операция с присваиванием
Операция с присваиванием
Операция с присваиванием
Операция с присваиванием
Операция с присваиванием
Операция с присваиванием
Операция с присваиванием
Операция с присваиванием
справа налево
справа налево
справа налево
справа налево
справа налево
справа налево
справа налево
справа налево
справа налево
справа налево
справа налево
справа налево
справа налево
2
2
2
2
2
2
2
2
2
2
2
2
2
lval, любое → любое
lval, любое → любое
lval, любое → любое
lval, любое → любое
lval, любое → любое
lval, любое → любое
lval, любое → любое
lval, любое → любое
lval, любое → любое
lval, любое → любое
lval, любое → любое
lval, любое → любое
lval, любое → любое
yield …
yield* …
yield
yield*
справа налево
справа налево
1
1
... … Расширение отсутствует 1
… , … Запятая слева направо 2 любое, любое → любое
Копирование материалов с данного сайта возможно только с разрешения администрации сайта
и при указании прямой активной ссылки на источник.
2011-2016 © puzzleweb.ru

Реклама на сайте | Обратная связь