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

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

Повний та детальний список операторів та виразів також доступний за посиланням.

Оператори

JavaScript має наступні типи операторів. Ця секція описує оператори, а також містить інформацію щодо їхніх пріоритетів.

JavaScript має як бінарні, так і унарні оператори, а також один особливий тернарний оператор - умовний оператор. Бінарному оператору потрібні два операнди - один перед оператором, інший після оператора:

операнд1 оператор операнд2

Наприклад, 3+4 чи x*y.

Унарний оператор потребує лише одного операнду до чи після оператора:

оператор операнд

чи

операнд оператор

Наприклад, x++ чи ++x.

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

Оператор присвоєння присвоює своєму лівому операнду значення на підставі значення правого операнда. Простим оператором присвоєння є оператор дорівнює (=), який присвоює значення свого правого операнда лівому операнду. Таким чином, x = y присвоює значення змінної y змінній x.

Також існують складені оператори присвоєння, які є скороченнями для операцій, перелічених у наступній таблиці:

Складені оператори присвоювання
Назва Оператор скороченого запису Значення
Присвоєння x = y x = y
Присвоєння з додаванням x += y x = x + y
Присвоєння з відніманням x -= y x = x - y
Присвоєння з множенням x *= y x = x * y
Присвоєння з діленням x /= y x = x / y
Присвоєння остачі x %= y x = x % y
Присвоєння з піднесенням до степеня x **= y x = x ** y
Присвоєння з лівим зсувом x <<= y x = x << y
Присвоєння з правим зсувом x >>= y x = x >> y
Присвоєння з беззнаковим правим зсувом x >>>= y x = x >>> y
Присвоєння з побітовим І x &= y x = x & y
Присвоєння з виключним побітовим АБО x ^= y x = x ^ y
Присвоєння з побітовим АБО x |= y x = x | y

Деструктуризація

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

var foo = ['один', 'два', 'три'];

// без деструктуризації
var one   = foo[0];
var two   = foo[1];
var three = foo[2];

// із деструктуризацією
var [one, two, three] = foo;

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

Оператор порівняння порівнює свої операнди та повертає логічне значення, базуючись на істинності порівняння. Операнди можуть бути числовими, рядковими, логічними значеннями або об'єктами. Рядки порівнюються згідно стандартного лексикографічного порядку, з використанням значень Unicode. У більшості випадків, якщо два операнди не належать до одного типу, JavaScript намагається привести їх до належного для порівняння типу. Зазвичай це призводить до числового порівняння операндів. Єдиними винятками у конвертації типів під час порівняння є оператори === та !==, які виконують перевірку на строгу рівність та строгу нерівність. Ці оператори не намагаються перед перевіркою на рівність привести операнди до спільного типу. Наступна таблиця наводить оператори порівняння у контексті цього фрагменту коду:

var var1 = 3;
var var2 = 4;
Оператори порівняння
Оператор Опис Приклади, які повертають true
Рівність (==) Повертає true, якщо оператори рівні. 3 == var1

"3" == var1

3 == '3'
Нерівність (!=) Повертає true, якщо оператори нерівні. var1 != 4
var2 != "3"
Строга рівність (===) Повертає true якщо оператори рівні та належать до одного типу. Дивіться також Object.is та однаковість у JS. 3 === var1
Строга нерівність (!==) Повертає true, якщо оператори належать до одного типу, але нерівні, або належать до різних типів. var1 !== "3"
3 !== '3'
Більше ніж (>) Повертає true, якщо лівий операнд більший за правий. var2 > var1
"12" > 2
Більше чи дорівнює (>=) Повертає true, якщо значення лівого операнда більше або дорівнює значенню правого операнда. var2 >= var1
var1 >= 3
Менше ніж (<) Повертає true, якщо лівий операнд менший за правий. var1 < var2
"2" < 12
Менше чи дорівнює (<=) Повертає true, якщо значення лівого операнда менше або дорівнює значенню правого операнда. var1 <= var2
var2 <= 5

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

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

Арифметичний оператор приймає числові значення (літерали чи змінні) в якості операндів та повертає єдине числове значення. Стандартними арифметичними операторами є додавання (+), віднімання (-), множення (*) та ділення (/). Ці оператори працюють так само, як і в більшості інших мов програмування при використанні з числами з рухомою комою (зокрема, зауважте, що ділення на нуль повертає Infinity). Наприклад:

1 / 2; // 0.5
1 / 2 == 1.0 / 2.0; // це дорівнює true

На додачу до стандартних арифметичних операцій (+, -, * /), JavaScript надає арифметичні операції, перечислені у наведеній нижче таблиці:

Арифметичні оператори
Оператор Опис Приклад
Остача (%) Бінарний оператор. Повертає цілочисельну остачу від ділення двох операндів. 12 % 5 повертає 2.
Інкремент (++) Унарний оператор. Додає до операнда одиницю. Якщо використовується як префіксний оператор (++x), повертає значення операнда після додавання одиниці; якщо використовується як постфіксний оператор (x++), повертає значення операнда перед додаванням одиниці. Якщо x дорівнює 3, тоді ++x присвоює x значення 4 та повертає 4, в той час, як x++ повертає 3 і лише тоді присвоює x значення 4.
Декремент (--) Унарний оператор. Віднімає одиницю від свого операнда. Повернене значення аналогічне поверненому значенню оператора інкременту. Якщо x дорівнює 3, тоді --x присвоює x значення 2 та повертає 2, в той час, як x-- повертає 3 і тільки тоді присвоює x значення 2.
Унарний мінус (-) Унарний оператор. Повертає операнд з протилежним знаком. Якщо x дорівнює 3, то -x повертає -3.
Унарний плюс (+) Унарний оператор. Намагається перетворити операнд на число, якщо він не є числом. +"3" повертає 3.
+true повертає 1.
Піднесення до степеня (**) Підносить основу степеня до показника степеня, тобто, основапоказник 2 ** 3 повертає 8.
10 ** -1 повертає 0.1.

Бітові оператори

Бітовий оператор опрацьовує свої операнди як послідовність 32-х бітів (нулів та одиниць), а не як десяткові, шістнадцяткові або вісімкові числа. Наприклад, десяткове число дев'ять має бітове представлення 1001. Бітові оператори виконують операції над цими бітовими представленнями, але повертають стандартні числові значення JavaScript.

Наступна таблиця наводить перелік бітових операторів JavaScript.

Бітові оператори
Оператор Застосування Опис
Побітове І (AND) a & b Повертає одиницю на кожній позиції, де відповідні біти обох операндів дорівнюють одиницям.
Побітове АБО (OR) a | b Повертає нуль на кожній позиції, де відповідні біти обох операндів дорівнюють нулям.
Виключне побітове АБО (XOR) a ^ b Повертає нуль на кожній позиції, де відповідні біти однакові.
[Повертає один на кожній позиції, де відповідні біти мають різні значення.]
Побітове НЕ (NOT) ~ a Виконує інверсію бітів операнду.
Лівий зсув a << b Зсуває a у двійковому представленні на b бітів ліворуч, заповнюючи позиції справа нулями.
Правий зсув з розширенням знаку a >> b Зсуває a у двійковому представленні на b бітів праворуч, відкидаючи зсунуті біти.
Правий зсув із заповненням нулями a >>> b Зсуває a у двійковому представленні на b бітів праворуч, відкидаючи зсунуті біти та заповнюючи позиції зліва нулями.

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

Концептуально побітові логічні оператори працюють наступним чином:

  • Операнди перетворюються на 32-бітні цілі числа та виражаються послідовністю бітів (нулів та одиниць). Числа, що мають більше 32 бітів, втрачають свої старші біти. Наприклад, наступне ціле число, що має більше 32 бітів, буде перетворено на 32-бітне ціле число:
    До:     11100110111110100000000000000110000000000001
    Після:              10100000000000000110000000000001
  • Кожен біт першого операнду ставиться у пару до відповідного біту другого операнду: перший біт до першого біту, другий біт до другого, і так далі.
  • Оператор застосовується до кожної пари бітів, а результат будується побітово.

Наприклад, бінарним представленням числа дев'ять є 1001, а бінарним представленням п'ятнадцяти є 1111. Отже, коли бітові оператори застосовуються до цих величин, результати будуть наступні:

Приклади бітових операторів
Вираз Результат Двійковий опис
15 & 9 9 1111 & 1001 = 1001
15 | 9 15 1111 | 1001 = 1111
15 ^ 9 6 1111 ^ 1001 = 0110
~15 -16 ~00000000...00001111 = 11111111...11110000
~9 -10 ~00000000...00001001 = 11111111...11110110

Зауважте, що усі 32 біти інвертуються побітовим оператором НЕ, і що значення, в яких найстарший (перший зліва) біт дорівнює 1, відображають від'ємні числа (формат доповняльного коду).

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

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

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

Оператори зсуву наведені у наступній таблиці.

Оператори бітового зсуву
Оператор Опис Приклад
Лівий зсув
(<<)
Цей оператор виконує зсув першого операнду на вказану кількість бітів ліворуч. Надлишкові біти, зсунуті ліворуч, відкидаються. Біти, додані справа, заповнюються нулями. 9<<2 вертає 36, тому що число 1001, зсунуте на 2 біти ліворуч, стає 100100, тобто, 36.
Правий зсув з розширенням знаку (>>)

Цей оператор виконує зсув першого операнду на вказану кількість бітів праворуч. Надлишкові біти, зсунуті праворуч, відкидаються. Біти, додані зліва, заповнюються значенням старшого біта.

9>>2 вертає 2, тому що число 1001, зсунуте на 2 біти праворуч, стає 10, тобто 2. Аналогічно, -9>>2 вертає -3,  тому що знак зберігається.
Правий зсув із заповненням нулями(>>>)

Цей оператор виконує зсув першого операнду на вказану кількість бітів праворуч. Надлишкові біти, зсунуті праворуч, відкидаються. Біти, додані зліва, заповнюються нулями.

19>>>2 вертає 4, тому що число 10011, зсунуте на 2 бітів праворуч, стає 100, тобто 4. Для невід'ємних чисел, правий зсув із заповненням нулями та правий зсув з розширенням знаку дають однаковий результат.

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

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

Логічні оператори
Оператор Застосування Опис
Логічне І (&&) expr1 && expr2 Вертає вираз expr1, якщо він може бути перетворений на false; інакше, повертає expr2. Таким чином, при використанні з булевими значеннями && вертає true, якщо обидва операнди дорівнюють true; інакше, вертає false.
Логічне АБО (||) expr1 || expr2 Вертає вираз expr1, якщо він може бути перетворений на true; інакше, вертає expr2. Таким чином, при використанні з булевими значеннями || вертає true, якщо будь-який з операндів дорівнює true; якщо обидва дорівнюють false, вертає false.
Логічне НЕ (!) !expr Вертає false, якщо його єдиний операнд може бути перетворений на true; інакше, вертає true.

Прикладами виразів, які можуть бути перетворені на false, є ті, які повертають null, 0, NaN, порожній рядок ("") або undefined.

Наступний код демонструє приклади оператора && (логічне І).

var a1 =  true && true;     // t && t вертає true
var a2 =  true && false;    // t && f вертає false
var a3 = false && true;     // f && t вертає false
var a4 = false && (3 == 4); // f && f вертає false
var a5 = 'Кіт' && 'Пес';    // t && t вертає Пес
var a6 = false && 'Кіт';    // f && t вертає false
var a7 = 'Кіт' && false;    // t && f вертає false

Наступний код демонструє приклади оператора || (логічне АБО).

var o1 =  true || true;     // t || t вертає true
var o2 = false || true;     // f || t вертає true
var o3 =  true || false;    // t || f вертає true
var o4 = false || (3 == 4); // f || f вертає false
var o5 = 'Кіт' || 'Пес';    // t || t вертає Кіт
var o6 = false || 'Кіт';    // f || t вертає Кіт
var o7 = 'Кіт' || false;    // t || f вертає Кіт

Наступний код демонструє приклади оператора ! (логічне НЕ).

var n1 = !true;  // !t вертає false
var n2 = !false; // !f вертає true
var n3 = !'Кіт'; // !t вертає false

Коротке замикання обчислення

Оскільки логічні вирази обчислюються зліва направо, вони перевіряються на можливе "коротке замикання" обчислення за наступними правилами:

  • false && будь-що обчислюється як false.
  • true || будь-що обчислюється як true.

Правила логіки гарантують, що ці обчислення завжди будуть правильними. Зауважте, що частина виразу будь-що не обчислюється, тому будь-які побічні ефекти від цих обчислень не відбудуться.

Рядкові оператори

На додачу до операторів порівняння, які можуть застосовуватись до рядкових значень, оператор конкатенації (+) об'єднує значення двох рядків, повертаючи інший рядок, який є об'єднанням рядків двох операндів.

Наприклад,

console.log('мій ' + 'рядок'); // консоль виводить рядок "мій рядок".

Скорочений оператор присвоєння += також може застосовуватись для конкатенації рядків.

Наприклад,

var mystring = 'алфа';
mystring += 'віт'; // повертає "алфавіт" та присвоює це значення mystring.

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

Умовний оператор - єдиний оператор у JavaScript, який приймає три операнди. У оператора може бути одне чи два значення, в залежності від умови. Використовує наступний синтакс:

умова ? значення1 : значення2

Якщо умова дорівнює true, оператор повертає значення1.  В іншому випадку - значення2. Умовний оператор можна використовувати будь-де, де використовується звичайний оператор. Наприклад:

var status = (age >= 18) ? 'дорослий' : 'неповнолітній';

Ця інструкція присвоює значення "дорослий" змінній status, якщо значення age (вік) більше чи дорівнює 18. Інакше, вона присвоює змінній status значення "неповнолітній".

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

Оператор кома (,) просто обчислює обидва свої операнди та повертає значення останнього операнда. Цей оператор найчастіше використовується всередині циклу for, що дозволяє оновлювати більше однієї змінної на кожному проході циклу.

Наприклад, якщо a є двовимірним масивом з 10 елементами по кожній стороні, наступний код використовує оператор кома, щоб оновити дві змінні одночасно. Код виводить значення діагональних елементів масиву:

for (var i = 0, j = 9; i <= j; i++, j--)
  console.log('a[' + i + '][' + j + ']= ' + a[i][j]);

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

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

delete

Оператор delete видаляє об'єкт, властивість об'єкта або елемент за вказаним індексом у масиві. Синтаксис наступний:

delete objectName;
delete objectName.property;
delete objectName[index];
delete property; // працює лише всередині конструкції with

де objectName є іменем об'єкта, property - існуюча властивість, а index - ціле число, що вказує розташування елемента у масиві.

Четверта форма працює лише всередині блоку with для видалення властивості об'єкта.

Ви можете використовувати оператор delete для видалення змінних, оголошених неявно, але не тих, що були оголошені оператором var.

Якщо оператор delete відпрацьовує успішно, значенням властивості чи елемента стає undefined. Оператор delete повертає true, якщо операція можлива; він повертає false, якщо операція неможлива.

x = 42;
var y = 43;
myobj = new Number();
myobj.h = 4;    // створює властивість h
delete x;       // вертає true (можна видалити властивість, оголошену неявно)
delete y;       // вертає false (не можна видалити властивість, оголошену через var)
delete Math.PI; // вертає false (не можна видаляти попередньо визначені властивості)
delete myobj.h; // вертає true (можна видалити властивість, визначену користувачем)
delete myobj;   // вертає true (можна видалити, якщо властивість оголошена неявно)
Видалення елементів масиву

Коли ви видаляєте елемент масиву, це не впливає на довжину масиву. Для прикладу, якщо ви видалите a[3], a[4] досі є a[4], а a[3] дорівнює undefined.

Коли оператор delete видаляє елемент масиву, цей елемент більше не існує у масиві. У наступному прикладі trees[3] видаляється оператором delete. Однак, адреса trees[3] досі доступна та повертає undefined.

var trees = ['секвоя', 'лавр', 'кедр', 'дуб', 'клен'];
delete trees[3];
if (3 in trees) {
  // це не виконається
}

Якщо вам потрібно, щоб елемент існував, але мав значення undefined, скористайтесь ключовим словом undefined замість оператора delete. У наступному прикладі trees[3] присвоюється значення undefined, але елемент масиву досі існує:

var trees = ['секвоя', 'лавр', 'кедр', 'дуб', 'клен'];
trees[3] = undefined;
if (3 in trees) {
  // це виконається
}

typeof

Оператор typeof використовується наступним чином:

typeof операнд
typeof (операнд)

Оператор typeof повертає рядок, що вказує тип необчисленого операнда. Операнд є рядком, змінною, ключовим словом чи об'єктом, для якого треба повернути тип. Круглі дужки є необов'язковими.

Припустимо, ви визначили наступні змінні:

var myFun = new Function('5 + 2');
var shape = 'коло';
var size = 1;
var foo = ['Яблуко', 'Манго', 'Апельсин'];
var today = new Date();

Оператор typeof вертає наступні результати для цих змінних:

typeof myFun;       // вертає "function"
typeof shape;       // вертає "string"
typeof size;        // вертає "number"
typeof foo;         // вертає "object"
typeof today;       // вертає "object"
typeof doesntExist; // вертає "undefined"

Для ключових слів true та null оператор typeof вертає наступні результати:

typeof true; // вертає "boolean"
typeof null; // вертає "object"

Для числа та рядка оператор typeof вертає наступні результати:

typeof 62;            // вертає "number"
typeof 'Hello world'; // вертає "string"

Для значень властивостей оператор typeof вертає тип значення, яке містить ця властивість:

typeof document.lastModified; // вертає "string"
typeof window.length;         // вертає "number"
typeof Math.LN2;              // вертає "number"

Для методів та функцій оператор typeof вертає наступні результати:

typeof blur;        // вертає "function"
typeof eval;        // вертає "function"
typeof parseInt;    // вертає "function"
typeof shape.split; // вертає "function"

Для попередньо визначених об'єктів оператор typeof вертає наступні результати:

typeof Date;     // вертає "function"
typeof Function; // вертає "function"
typeof Math;     // вертає "object"
typeof Option;   // вертає "function"
typeof String;   // вертає "function"

void

Оператор void використовується наступним чином:

void (вираз)
void вираз

Оператор void вказує, що вираз має бути обчислений без повернення значення. Вираз є виразом JavaScript, який треба обчислити. Дужки, що оточують вираз, є необов'язковими, але вживати їх є гарним стилем.

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

Наступний код створює гіпертекстове посилання, яке нічого не робить, коли користувач на нього натискає. Коли користувач натискає на посилання, void(0) обчислюється як undefined, що не має жодного ефекту у JavaScript.

<a href="javascript:void(0)">Натисніть сюди, щоб нічого не робити</a>

Наступний код створює гіпертекстове посилання, яке відправляє форму, коли користувач натискає на нього.

<a href="javascript:void(document.form.submit())">
Натисніть сюди, щоб відправити</a>

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

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

in

Оператор in повертає true, якщо вказана властивість існує на вказаному об'єкті. Синтаксис наступний:

propNameOrNumber in objectName

де propNameOrNumber є рядковим або числовим виразом, який відображає ім'я властивості або індекс у масиві, а objectName є ім'ям об'єкта.

Наступний приклад демонструє варіанти використання оператора in.

// Масиви
var trees = ['секвоя', 'лавр', 'кедр', 'дуб', 'клен'];
0 in trees;        // вертає true
3 in trees;        // вертає true
6 in trees;        // вертає false
'лавр' in trees;    // вертає false (ви маєте вказати індекс,
                   // а не значення за цим індексом)
'length' in trees; // вертає true (length є властивістю масиву)

// вбудовані об'єкти
'PI' in Math;          // вертає true
var myString = new String('корал');
'length' in myString;  // вертає true

// Користувацькі об'єкти
var mycar = { make: 'Honda', model: 'Accord', year: 1998 };
'make' in mycar;  // вертає true
'model' in mycar; // вертає true

instanceof

Оператор instanceof повертає true, якщо вказаний об'єкт належить до вказаного типу. Синтаксис наступний:

objectName instanceof objectType

де objectName є ім'ям об'єкта, який порівнюється з objectType, а objectType є типом об'єкта, наприклад, Date або Array.

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

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

var theDay = new Date(1995, 12, 17);
if (theDay instanceof Date) {
  // інструкції для виконання
}

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

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

Наступна таблиця наводить пріоритети операторів, від найвищого до найнижчого.

Пріоритет операторів
Тип оператора Окремі оператори
властивість . []
виклик / створення екземпляра () new
заперечення / інкремент ! ~ - + ++ -- typeof void delete
множення / ділення * / %
додавання / віднімання + -
бітовий зсув << >> >>>
відношення < <= > >= in instanceof
рівність == != === !==
побітове-і &
виключне-побітове-або ^
побітове-або |
логічне-і &&
логічне-або ||
умовний ?:
присвоєння = += -= *= /= %= <<= >>= >>>= &= ^= |=
кома ,

Більш детальну версію цієї таблиці, доповнену посиланнями на додаткові подробиці щодо кожного оператора, можна знайти у довіднику з JavaScript.

Вирази

Виразом є будь-яка одиниця коду, яка вирішується з певним значенням.

Кожний синтаксично коректний вираз вирішується з якимось значенням, але, концептуально, існують два типи виразів: з побічними ефектами (наприклад: ті, що присвоюють значення змінній) та такі, що обчислюються і, таким чином, вирішуються з певним значенням.

Вираз x = 7 є прикладом першого типу. Цей вираз використовує оператор = для присвоєння семи змінній x. Сам вираз обчислюється з результатом сім.

Код 3 + 4 є прикладом другого типу виразів. Цей вираз за допомогою оператора + складає три та чотири без присвоєння результату, семи, змінній.

JavaScript має наступні категорії виразів:

  • Арифметичні: обчислюються як число, наприклад, 3.14159. (Загалом, використовують арифметичні оператори.)
  • Рядкові: обчислюються як рядок, наприклад, "Фред" або "234". (Загалом, використовують рядкові оператори.)
  • Логічні: обчислюються як true або false. (Часто використовують логічні оператори.)
  • Первинні вирази: Базові ключові слова та загальні вирази у JavaScript.
  • Лівосторонні вирази: значення зліва є призначенням присвоєння.

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

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

this

Використовуйте ключове слово this для посилання на поточний об'єкт. Загалом, this у методі посилається на об'єкт, що його викликав. Використовуйте this або з крапкою, або з дужковою нотацією:

this['propertyName']
this.propertyName

Припустимо, функція на ім'я validate перевіряє властивість об'єкта value, маючи найменше та найбільше значення:

function validate(obj, lowval, hival) {
  if ((obj.value < lowval) || (obj.value > hival))
    console.log('Некоректне значення!');
}

Ви можете викликати validate в кожному обробнику подій елементів форми onChange, використовуючи this, щоб передати йому елемент форми, як у наступному прикладі:

<p>Введіть число між 18 та 99:</p>
<input type="текст" name="вік" size=3 onChange="validate(this, 18, 99);">

Оператор групування

Оператор групування ( ) контролює пріоритет обчислення у виразах. Наприклад, ви можете змінити обчислення спочатку множення та ділення, а потім додавання та віднімання, щоб обчислити спочатку додавання.

var a = 1;
var b = 2;
var c = 3;

// пріоритет за замовчуванням
a + b * c     // 7
// обчислюється наступним чином
a + (b * c)   // 7

// тепер змінюємо пріоритет
// додавання перед множенням
(a + b) * c   // 9

// що є рівнозначним
a * c + b * c // 9

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

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

new

Ви можете скористатись оператором new, щоб створити екземпляр визначеного користувачем типу об'єкта або одного з вбудованих типів. Використовуйте new наступним чином:

var objectName = new objectType([param1, param2, ..., paramN]);

super

Ключове слово super використовується для виклику функцій батьківського об'єкта. Воно корисне для використання з класами, для виклику батьківського конструктора, наприклад.

super([arguments]); // викликає батьківський конструктор.
super.functionOnParent([arguments]);

Оператор розпакування

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

Приклад: Сьогодні, якщо ви маєте масив та бажаєте створити новий масив, використавши існуючий масив як його частину, синтаксису масивного літералу більше недостатньо, і вам доводиться повертатись до імперативного коду, використовуючи комбінацію з push, splice, concat, і т. д. З оператором розпакування все стає набагато лаконічнішим:

var parts = ['плечі', 'коліна'];
var lyrics = ['голова', ...parts, 'та', 'пальці'];

Схожим чином оператор розпакування працює з викликами функцій:

function f(x, y, z) { }
var args = [0, 1, 2];
f(...args);