1. Терміни: «унарний», «бінарний», «операнд»
У операторів є своя термінологія, яка використовується в усіх мовах програмування.
операнд - Те, до чого застосовується оператор. наприклад:5 * 2 - Оператор множення з лівим і правим операндами. Інша назва: «аргумент оператора».
унарним називається оператор, який застосовується до одного виразу. Наприклад, оператор унарний мінус"-" змінює знак числа на протилежний:
var x=1;
alert (-x); // -1, Унарний мінус
alert (- (x + 2)); // -3, Унарний мінус застосований до результату складання x + 2
alert (- (- 3)); // 3
бінарним називається оператор, який застосовується до двох операндам. Той же мінус існує і в бінарній формі:
var x = 1, y = 3;
alert (y - x); // 2, бінарний мінус
Робота унарна "+" і бінарного "+" в JavaScript істотно розрізняється.
Це дійсно різні оператори. Бінарний плюс складає операнди, а унарний нічого не робить в арифметичному плані, але зате призводить операнд до числового типу. Далі ми побачимо приклади.
2. арифметичні оператори Базові арифметичні оператори знайомі нам з дитинства: це плюс +, мінус -, помножити *, поділити /.
наприклад:
alert (2 + 2); // 4
Або трохи складніше:
var i = 2;
i = (2 + i) * 3 / i;
alert (i); // 6
Більш рідкісний арифметичний оператор % цікавий тим, що ніякого відношення до відсотків не має, його результат % b - Це залишок від ділення a на b. Наприклад:
alert (5% 2); // 1, залишок від ділення 5 на 2
alert (8% 3); // 2, залишок від ділення 8 на 3
alert (6% 3); // 0, залишок від ділення 6 на 3
Додавання рядків, бінарний +
Якщо бінарний оператор + застосувати до рядків, то він їх об'єднує в одну:
var a = "моя" + "рядок";
alert (a); // моястрока
Якщо хоча б один аргумент є рядком, то другий буде також перетворений до рядка!
Причому не важливо, праворуч або ліворуч знаходиться операнд-рядок, в будь-якому випадку нестроковий аргумент буде перетворений. наприклад:
alert ( '1' + 2); // "12"
alert (2 + '1'); // "21"
Це приведення до рядка - особливість бінарного оператора "+".
Решта арифметичні оператори працюють тільки з числами і завжди наводять аргументи до числа. Наприклад:
alert ( '1' - 2); // -1
alert (6 / '2'); // 3
унарний плюс +
Унарний плюс як арифметичний оператор нічого не робить:
alert (+1); // 1
alert (+ (1-2)); // -1
Як видно, плюс нічого не змінив у виразах. Результат - такий же, як і без нього. Проте, він широко застосовується, так як його «побічний ефект» - перетворення значення в число.
Наприклад, у нас є два числа, в формі рядків, і потрібно їх скласти. Бінарний плюс складе їх як рядки, тому використовуємо унарний плюс, щоб перетворити до числа:
var a = "2"; var b = "3";
alert (a + b); // 23, так як бінарний плюс складає рядки alert (+ a + b); // 23, другий операнд - все ще рядок
alert (+ a + + b); // 5, обидва операнда попередньо перетворені в числа
5. Присвоєння
Оператор присвоювання виглядає як знак рівності =:
var i = 1 + 2;
alert (i); // 3
Він обчислює вираз, яке знаходиться праворуч, і привласнює результат змінної. Цей вислів може бути досить складним і включати в себе будь-які інші змінні:
var a = 1;
var b = 2;
a = b + a + 3; // (*)
alert (a); // 6
В рядку (*) спочатку відбудеться обчислення, що використовує поточне значення a (Тобто 1), Після чого результат перезапише старе значення a.
Можливо присвоювання по ланцюжку:
var a, b, c;
a = b = c = 2 + 2;
Таке присвоювання працює праворуч-ліворуч, тобто спочатку обчислити саме праве вираз 2 + 2, Присвоїти в c, Потім виконається b = c і наостанок, a = b. оператор"=" повертає значення
Всі оператори повертають значення. викликx = вираз записує вираз в x, а потім повертає його. Завдяки цьому присвоювання можна використовувати як частину складнішого виразу:
var a = 1; var b = 2;
var c = 3 - (a = b + 1);
alert (a); // 3 alert (c); // 0
Вприкладі вище результатом (A = b + 1) є значення, яке записується в a (Тобто 3). Воно використовується для обчислення c.
