Выражения и операторы
Эта глава описывает все операторы, выражения и ключевые слова языка JavaScript.
Выражения и операторы по категориям
Алфавитный список смотрите в боковой панели слева.
Первичные выражения
Базовые ключевые слова и общие выражения в JavaScript.
this
- Ключевое слово
this
ссылается на контекст выполняемой функции. function
- Ключевое слово
function
определяет выражение функции. class
- Ключевое слово
class
определяет выражение класса. function*
- Ключевое слово
function*
(со звёздочкой) определяет функцию-генератор. yield
- Пауза или продолжение выполнения функции-генератора.
yield*
- Делегирует выполнение другому генератору итерируемому объекту.
-
Experimental
async function*
async function
определяет выражение асинхронной функции.-
Experimental
await
- Пауза и продолжение выполнения асинхронной функции и ожидание Promise (результата выполнения) с результатом разрешено/отклонено.
[]
- Синтаксис создания инициализатора/литерала массива.
{}
- Синтаксис создания инициализатора/литерала объекта
/ab+c/i
- Синтаксис создания литерала регулярного выражения.
( )
- Оператор группировки.
Левосторонние выражения
Значения слева являются назначением присваивания.
- Доступ к свойству
- Операторы доступа к членам предоставляют доступ к свойству или методу объекта
(object.property
иobject['property']
). new
- Оператор
new
создаёт экземпляр объекта с использованием конструктора. - new.target
- Свойство
new.target
ссылается на конструктор или функцию, который был вызван через операторnew
. super
- Ключевое слово
super
вызывает конструктор родительского класса. ...obj
- Оператор распространения позволяет развернуть выражение в местах, где ожидается несколько аргументов (при вызове функций) или несколько элементов (при создании литералов массива).
Инкремент и декремент
Операторы постфиксного/префиксного инкремента и декремента.
A++
(en-US)- Оператор постфиксного инкремента.
A--
(en-US)- Оператор постфиксного декремента.
++A
(en-US)- Оператор префиксного инкремента. (Значение переменной, сначала, увеличивается на 1, а затем используется в выражении)
--A
(en-US)- Оператор префиксного декремента.
Унарные операторы
Унарные операции — это операции с одним операндом.
delete
- Оператор
delete
удаляет свойство из объекта. void
- Оператор
void
отбрасывает возвращаемое значение выражения. typeof
- Оператор
typeof
определяет тип переданного объекта. +
(en-US)- Оператор унарного плюса преобразует свой операнд в тип
Number
. -
(en-US)- Оператор унарного минуса преобразует свой операнд в тип
Number
, а затем меняет его знак. ~
(en-US)- Оператор побитового НЕ.
!
(en-US)- Оператор логического НЕ.
Арифметические операторы
Арифметические операторы своими операндами принимают числовые значения (литералы или переменные) и возвращают одно числовое значение.
Реляционные операторы
Реляционные операторы (операторы отношения) сравнивают свои операнды и возвращают значение типа Boolean
, зависящее от того, был ли результат сравнения истинным или ложным.
in
- Оператор
in
определяет, содержит ли объект указанное свойство. instanceof
- Оператор
instanceof
определяет, является ли объект экземпляром потомком Prototype (или экземпляром) другого объекта. <
(en-US)- Оператор меньше.
>
(en-US)- Оператор больше.
<=
(en-US)- Оператор меньше или равно.
>=
(en-US)- Оператор больше или равно.
Заметьте: => это не оператор. Это нотация для Стрелочных функций.
Операторы равенства
Результат вычисления оператора равенства всегда имеет тип Boolean
и значение, зависящее от того, был ли результат проверки истинным или ложным.
==
(en-US)- Оператор проверки на равенство.
!=
(en-US)- Оператор проверки на неравенство.
===
(en-US)- Оператор проверки на идентичность.
!==
(en-US)- Оператор проверки на неидентичность.
Операторы побитового сдвига
Операции для сдвига всех битов операнда.
<<
(en-US)- Оператор побитового сдвига влево.
>>
(en-US)- Оператор знакового побитового сдвига вправо.
>>>
(en-US)- Оператор беззнакового побитового сдвига вправо.
Бинарные побитовые операторы
Бинарные логические операторы
Логические операторы обычно используются вместе с булевыми (логическими) значениями и в сочетании с ними они возвращают булево значение.
&&
(en-US)- Оператор логического И.
||
(en-US)- Оператор логического ИЛИ.
Условный (тернарный) оператор
(условие ? ifTrue : ifFalse)
- Условный оператор возвращает одно значение из двух данных в зависимости от логического значения условия.
Операторы присваивания
Операторы присваивания присваивают значение своему левому операнду, зависящее от значения их правого операнда.
=
(en-US)- Оператор присваивания.
*=
(en-US)- Оператор присваивания с умножением.
/=
(en-US)- Оператор присваивания с делением.
%=
(en-US)- Оператор присваивания с взятием остатка от деления.
+=
(en-US)- Оператор присваивания со сложением.
-=
(en-US)- Оператор присваивания с вычитанием.
<<=
(en-US)- Оператор присваивания со сдвигом влево.
>>=
(en-US)- Оператор присваивания со знаковым сдвигом вправо.
>>>=
(en-US)- Оператор присваивания с беззнаковым сдвигом вправо.
&=
(en-US)- Оператор присваивания с побитовым И.
^=
(en-US)- Оператор присваивания с побитовым ИСКЛЮЧАЮЩИМ ИЛИ.
|=
(en-US)- Оператор присваивания с побитовым ИЛИ.
[a, b] = [1, 2]
{a, b} = {a:1, b:2}
- Деструктурирующее присваивание позволяет вам присваивать свойства массива или объекта переменным с использованием синтаксиса, очень похожего на объявление литералов массива или объекта.
Оператор запятая
,
- Оператор запятая позволяет вычислять несколько выражений в одном операторе и возвращает результат вычисления последнего выражения.
-
Нестандартные особенности
- Non-Standard Legacy generator function
- Ключевое слово
function
может быть использовано для определения устаревших функций-генераторов в одном выражении. Для того, чтобы сделать такую функцию, её тело должно содержать хотя бы одно выражениеyield
. - Non-Standard Expression closures
- Синтаксис закрытого выражения для сокращённого написания простейших функций.
-
Non-Standard
[for (x of y) x]
- Упрощённый синтаксис создания массива.
-
Non-Standard
(for (x of y) y)
- Упрощённый синтаксис создания генератора.
Спецификации
Спецификация | Статус | Комментарии |
---|---|---|
ECMAScript 1st Edition (ECMA-262) Определение 'Expressions' в этой спецификации. |
Стандарт | Изначальное определение. |
ECMAScript 5.1 (ECMA-262) Определение 'Expressions' в этой спецификации. |
Стандарт | |
ECMAScript 2015 (6th Edition, ECMA-262) Определение 'ECMAScript Language: Expressions' в этой спецификации. |
Стандарт | Новое: Оператор распространения, деструктурирующее присваивание, ключевое слово super . |
ECMAScript (ECMA-262) Определение 'ECMAScript Language: Expressions' в этой спецификации. |
Живой стандарт |