Выражения и операторы

Эта глава описывает все операторы, выражения и ключевые слова языка JavaScript.

Выражения и операторы по категориям

Алфавитный список смотрите в боковой панели слева.

Первичные выражения

Базовые ключевые слова и общие выражения в JavaScript.

this

Ключевое слово this ссылается на контекст выполняемой функции.

function

Ключевое слово function определяет выражение функции.

class

Ключевое слово class определяет выражение класса.

function*

Ключевое слово function* (со звёздочкой) определяет функцию-генератор.

yield

Пауза или продолжение выполнения функции-генератора.

yield*

Делегирует выполнение другому генератору итерируемому объекту.

Экспериментальная возможность async function*

async function определяет выражение асинхронной функции.

Экспериментальная возможность 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)

Оператор логического НЕ.

Арифметические операторы

Арифметические операторы своими операндами принимают числовые значения (литералы или переменные) и возвращают одно числовое значение.

+ (en-US)

Оператор сложения.

- (en-US)

Оператор вычитания.

/ (en-US)

Оператор деления.

* (en-US)

Оператор умножения.

% (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)

Оператор беззнакового побитового сдвига вправо.

Бинарные побитовые операторы

Побитовые операторы трактуют свои операнды как набор из 32 битов (нулей и единиц) и возвращают стандартные числовые значения JavaScript.

& (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 (en-US)

Ключевое слово function может быть использовано для определения устаревших функций-генераторов в одном выражении. Для того, чтобы сделать такую функцию, её тело должно содержать хотя бы одно выражение yield.

Non-standard Expression closures

Синтаксис закрытого выражения для сокращённого написания простейших функций.

Non-standard [for (x of y) x] (en-US)

Упрощённый синтаксис создания массива.

Non-standard (for (x of y) y) (en-US)

Упрощённый синтаксис создания генератора.

Спецификации

Specification
ECMAScript Language Specification
# sec-addition-operator-plus
ECMAScript Language Specification
# sec-assignment-operators
ECMAScript Language Specification
# sec-async-function-definitions
ECMAScript Language Specification
# sec-async-generator-function-definitions
ECMAScript Language Specification
# prod-BitwiseANDExpression
ECMAScript Language Specification
# sec-bitwise-not-operator
ECMAScript Language Specification
# prod-BitwiseORExpression
ECMAScript Language Specification
# prod-BitwiseXORExpression
ECMAScript Language Specification
# sec-class-definitions
ECMAScript Language Specification
# sec-comma-operator
ECMAScript Language Specification
# sec-conditional-operator
ECMAScript Language Specification
# sec-postfix-decrement-operator
ECMAScript Language Specification
# sec-delete-operator
ECMAScript Language Specification
# sec-destructuring-assignment
ECMAScript Language Specification
# sec-destructuring-binding-patterns
ECMAScript Language Specification
# sec-multiplicative-operators
ECMAScript Language Specification
# sec-equality-operators
ECMAScript Language Specification
# sec-exp-operator
ECMAScript Language Specification
# sec-function-definitions
ECMAScript Language Specification
# sec-generator-function-definitions
ECMAScript Language Specification
# sec-relational-operators
ECMAScript Language Specification
# sec-grouping-operator
ECMAScript Language Specification
# sec-import-calls
ECMAScript Language Specification
# prod-ImportMeta
HTML Standard
# hostgetimportmetaproperties
ECMAScript Language Specification
# sec-postfix-increment-operator
ECMAScript Language Specification
# sec-left-shift-operator
ECMAScript Language Specification
# prod-LogicalANDExpression
ECMAScript Language Specification
# sec-logical-not-operator
ECMAScript Language Specification
# prod-LogicalORExpression
ECMAScript Language Specification
# sec-new-operator
ECMAScript Language Specification
# sec-built-in-function-objects
ECMAScript Language Specification
# sec-null-value
ECMAScript Language Specification
# prod-CoalesceExpression
ECMAScript Language Specification
# sec-object-initializer
ECMAScript Language Specification
# prod-OptionalExpression
ECMAScript Language Specification
# sec-property-accessors
ECMAScript Language Specification
# sec-signed-right-shift-operator
ECMAScript Language Specification
# prod-SpreadElement
ECMAScript Language Specification
# prod-ArgumentList
ECMAScript Language Specification
# prod-PropertyDefinition
ECMAScript Language Specification
# sec-subtraction-operator-minus
ECMAScript Language Specification
# sec-super-keyword
ECMAScript Language Specification
# sec-this-keyword
ECMAScript Language Specification
# sec-typeof-operator
ECMAScript Language Specification
# sec-unary-minus-operator
ECMAScript Language Specification
# sec-unary-plus-operator
ECMAScript Language Specification
# sec-unsigned-right-shift-operator
ECMAScript Language Specification
# sec-void-operator
ECMAScript Language Specification
# prod-YieldExpression
ECMAScript Language Specification
# sec-generator-function-definitions-runtime-semantics-evaluation

Смотрите также