6. Пріоритет
В тому випадку, якщо не має декілька операторів - порядок їх виконання визначається пріоритетом.
Зі школи ми знаємо, що множення в вираженні 2 * 2 + 1виконається раніше складання, тому що його пріоритет вище, а дужки явно задають порядок виконання. Але в JavaScript - набагато більше операторів, тому існує ціла таблиця пріоритетів. Вона містить як вже пройдені оператори, так і ті, які ми ще не проходили. У ній кожному оператору заданий числовий пріоритет. Той, у кого число менше - виконається раніше. Якщо пріоритет однаковий, то порядок виконання - зліва направо.
7. Інкремент / декремент: ++, -
Однією з найбільш частих операцій в JavaScript, як і в багатьох інших мовах програмування, є збільшення або зменшення змінної на одиницю. Для цього існують навіть спеціальні оператори:
інкремент ++ збільшує на 1:
var i = 2;
i ++; // більш короткий запис для i = i + 1.
alert (i); //3
декремент - зменшує на 1:
var i = 2;
i -; // більш короткий запис для i = i - 1.
alert (i); // 1
Інкремент / декремент можна застосувати тільки до змінної. код5 ++ дасть помилку.
Викликати ці оператори можна не тільки після, але і перед змінної: i ++ (Називається «Постфіксний форма») або ++ i ( «Префиксная форма»). Обидві ці форми записи роблять одне і те ж: збільшують на 1. Проте, між ними існує різниця. Вона видно тільки в тому випадку, коли ми хочемо не тільки збільшити / зменшити змінну, але і використовувати результат в тому ж виразі. Наприклад:
var i = 1;
var a = ++ i; // (*)
alert (a); // 2
В рядку (*) виклик ++ i збільшить змінну, а потім поверне її значення в a. Тобто, в a потрапить значення i після збільшення.
Постфіксний форма i ++ відрізняється від префіксної ++ i тим, що повертає старе значення, колишнє до збільшення.
В прикладі нижче в a потрапить старе значення i, рівне 1:
var i = 1;
var a = i ++; // (*)
alert (a); // 1
Якщо результат оператора не використовується, а потрібно тільки збільшити / зменшити змінну - без різниці, яку форму використовувати:
var I = 0;
i++;
++i;
alert(i); //2
Якщо хочеться тут же використовувати результат, то потрібна префиксная форма:
var i = 0;
alert (++ i); // 1
Якщо потрібно збільшити, але потрібно значення змінної до збільшення - Постфіксний форма:
var i = 0;
alert (i ++); // 0
Інкремент / декремент можна використовувати в будь-яких виразах.
При цьому він має більш високий пріоритет і виконується раніше, ніж арифметичні операції:
var i = 1;
alert (2 * ++ i); // 4
var i = 1;
alert (2 * i ++); // 2, виконався раніше але значення повернув старе
При цьому, потрібно з обережністю використовувати такий запис, тому що при читанні коду часто неочевидно, що змінна збільшується. Три рядки - довше, зате наочніше:
var i = 1;
alert (2 * i);
i ++;
8. Побітові оператори
Побітові оператори розглядають аргументи як 32-розрядні цілі числа і працюють на рівні їх внутрішнього двійкового представлення.
Ці оператори не є чимось специфічним для JavaScript, вони підтримуються в більшості мов програмування.
Підтримуються наступні побітові оператори:
AND (і) ( & ) OR (або) ( | )
XOR (побітовое виключає або) ( ^ )
NOT (не) ( ~ )
LEFT SHIFT (лівий зсув) ( << )
RIGHT SHIFT (праве зрушення) ( >> )
ZERO-FILL RIGHT SHIFT (праве зрушення із заповненням нулями) ( >>> )
