Вирази та оператори

Ця глава документує усі оператори, вирази та ключові слова мови JavaScript.

Вирази та оператори за категоріями

Список у алфавітному порядку дивіться на бічній панелі ліворуч.

Первинні вирази

Базові ключові слова та загальні вирази у JavaScript.

this
Ключове слово this посилається на особливу властивість контексту виконання функції.
function
Ключове слово function визначає функціональний вираз.
class
Ключове слово class визначає вираз класу.
function*
Ключове слово function* визначає вираз функції-генератора.
yield
Призупиняє та відновлює виконання функції-генератора.
yield*
Делегує до іншої функції-генератора або ітерабельного об'єкта.
async function*
async function визначає вираз async-функції.
await
Призупиняє та відновлює виконання async-функції та чекає на вирішення/відхилення проміса.
[]
Синтаксис масивного ініціалізатора/літералу.
{}
Синтаксис об'єктного ініціалізатора/літералу.
/ab+c/i
Літерал регулярного виразу.
( )
Оператор групування.

Лівосторонні вирази

Значення зліва є призначенням присвоєння.

Доступ до властивостей
Оператори доступу надають доступ до властивості або методу об'єкта
(object.property та object["property"]).
new
Оператор new створює екземпляр конструктора.
new.target
У конструкторах new.target посилається на конструктор, викликаний оператором new.
super
Ключове слово super викликає батьківський конструктор.
...obj
Оператор розпакування дозволяє розкласти вираз там, де очікується більше одного аргументу (для викликів функцій) або більше одного елемента (для масивних літералів).

Інкремент та декремент

Постфіксний/префіксний оператор інкременту та постфіксний/префіксний оператор декременту.

A++
Постфіксний оператор інкременту.
A--
Постфіксний оператор декременту.
++A
Префіксний оператор інкременту.
--A
Префіксний оператор декременту.

Унарні оператори

Унарна операція - це операція лише з одним операндом.

delete
Оператор delete видаляє властивість об'єкта.
void
Оператор void відкидає повернене значення виразу.
typeof
Оператор typeof визначає тип наданого об'єкта.
+
Унарний плюс перетворює свій операнд на число.
-
Унарний мінус перетворює свій операнд на число та міняє його знак на протилежний.
~
Оператор побітового НЕ.
!
Оператор логічного НЕ.

Арифметичні оператори

Арифметичні оператори приймають числові значення (або літерали, або змінні) в якості операндів та повертають єдине числове значення.

+
Оператор додавання.
-
Оператор віднімання.
/
Оператор ділення.
*
Оператор множення.
%
Оператор остачі.
**
Оператор піднесення до степеня.

Оператори відношення

Оператор порівняння порівнює свої операнди та повертає значення Boolean на підставі того, чи дорівнює порівняння true.

in
Оператор in визначає, чи має об'єкт надану властивість.
instanceof
Оператор instanceof визначає, чи є об'єкт екземпляром іншого об'єкта.
<
Оператор менше ніж.
>
Оператор більше ніж.
<=
Оператор менше чи дорівнює.
>=
Оператор більше чи дорівнює.

Заувага: => не оператор, а позначення для стрілкових функцій.

Оператори рівності

Результатом обчислення оператора рівності завжди є значення типу Boolean, на підставі того, чи дорівнює порівняння true.

==
Оператор рівності.
!=
Оператор нерівності.
===
Оператор ідентичності.
!==
Оператор неідентичності.

Оператори бітового зсуву

Операції, що зсувають усі біти операнду.

<<
Оператор лівого зсуву.
>>
Оператор правого зсуву.
>>>
Оператор беззнакового правого зсуву.

Побітові логічні оператори

Бітові оператори опрацьовують свої операнди як послідовність 32-х бітів (нулів та одиниць) та повертають стандартні числові значення JavaScript.

&
Побітове І.
|
Побітове АБО.
^
Виключне побітове АБО.

Логічні оператори

Логічні оператори зазвичай застосовуються до булевих (логічних) значень, і, в цьому випадку, вони повертають булеве значення.

&&
Логічне І.
||
Логічне АБО.

Умовний (тернарний) оператор

(condition ? ifTrue : ifFalse)

Умовний оператор повертає одне з двох значень, на підставі логічного значення умови.

Оператори присвоєння

Оператор присвоєння присвоює значення своєму лівому операнду на підставі значення свого правого операнду.

=
Оператор присвоєння.
*=
Присвоєння з множенням.
/=
Присвоєння з діленням.
%=
Присвоєння остачі.
+=
Присвоєння з додаванням.
-=
Присвоєння з відніманням.
<<=
Присвоєння з лівим зсувом.
>>=
Присвоєння з правим зсувом.
>>>=
Присвоєння з беззнаковим правим зсувом.
&=
Присвоєння з побітовим І.
^=
Присвоєння з виключним побітовим АБО.
|=
Присвоєння з побітовим АБО.
[a, b] = [1, 2]
{a, b} = {a:1, b:2}

Деструктуризаційне присвоєння дозволяє присвоювати властивості масиву або об'єкта змінним, використовуючи синтаксис, схожий на масивні або об'єктні літерали.

Оператор кома

,
Оператор кома дозволяє обчислення кількох виразів у єдиній інструкції та повертає результат останнього виразу.

Нестандартні функції 

Вирази-замикання Obsolete since Gecko 60
Синтаксис виразів-замикань є скороченим записом для написання простої функції.
Вираз застарілої функції-генератора Obsolete since Gecko 58
Ключове слово function можна використовувати для визначення застарілої функції-генератора всередині виразу. Щоб зробити функцію застарілим генератором, тіло функції повинно містити принаймні один вираз yield.
[for (x of y) x] Obsolete since Gecko 58
Заповнення масивів.
(for (x of y) y) Obsolete since Gecko 58
Заповнення генераторів.

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

Специфікація Статус Коментар
ECMAScript 1st Edition (ECMA-262)
The definition of 'Expressions' in that specification.
Standard Початкове визначення
ECMAScript 5.1 (ECMA-262)
The definition of 'Expressions' in that specification.
Standard
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'ECMAScript Language: Expressions' in that specification.
Standard Нове: оператор розпакування, деструктуризаційне присвоєння, ключове слово super.
ECMAScript Latest Draft (ECMA-262)
The definition of 'ECMAScript Language: Expressions' in that specification.
Draft

Див. також