Page 80 - 6108
P. 80
в будь-якому випадку нерядковий аргумент буде перетворений до рядка.
наприклад:
alert ( '1' + 2); // "12"
alert (2 + '1'); // "21"
Це приведення до рядка – особливість виключно бінарного оператора "+".
Решта арифметичні оператори працюють тільки з числами і завжди
приводять аргументи до числа.
alert (2 - '1'); // 1
alert (6 / '2'); // 3
Приведення до числа, унарний плюс +
Унарний плюс нічого не робить з числами:
alert (+1); // 1
alert (+ (1 - 2)); // -1
Проте, він широко застосовується, так як його «побічний ефект» -
перетворення значення в число. Наприклад, коли отримуємо значення з HTML-
полів або від користувача, то вони зазвичай у формі рядків.
А що, якщо їх потрібно, наприклад, скласти? Бінарний плюс складе їх як
рядки.
var apples = "2";
var oranges = "3";
alert (apples + oranges); // "23",
Тому використовуємо унарний плюс, щоб ппривести значення операнда до
числа:
alert (+apples + +oranges); // 5,
Спочатку виконаються унарні плюси, які приведуть рядки до чисел, а
потім - бінарний '+' їх складе.
Пріоритет
У тому випадку, якщо у виразі є декілька операторів – порядок їх
виконання визначається пріоритетом. В JavaScript існує ціла таблиця
пріоритетів, в якій кожному оператору заданий числовий пріоритет. Той, у
якого число більше – виконається раніше. Якщо пріоритет однаковий, то
порядок виконання – зліва направо.
Присвоєння
В таблиці пріоритетів також є оператор присвоювання =. У нього – один з
найнижчих пріоритетів: 3. Саме тому, коли змінній щось привласнюють,
наприклад, x = 2 * 2 + 1 спочатку виконається арифметика, а вже потім –
відбудеться присвоювання =.
var x = 2 * 2 + 1; // 5
Можливо присвоювання по ланцюжку:
var a, b, c;
a = b = c = 2 + 2;
alert (a); // 4
alert (b); // 4
alert (c); // 4