--- title: Арифметичні оператори slug: conflicting/Web/JavaScript/Reference/Operators tags: - JavaScript - Оператор translation_of: Web/JavaScript/Reference/Operators translation_of_original: Web/JavaScript/Reference/Operators/Arithmetic_Operators original_slug: Web/JavaScript/Reference/Operators/Arithmetic_Operators ---
Арифметичні оператори приймають числові значення (або літерали, або змінні) в якості операндів та повертають єдине числове значення. Стандартними арифметичними операторами є додавання (+), віднімання (-), множення (*) та ділення (/).
Оператор додавання повертає суму числових операндів або об'єднання рядків.
Оператор: x + y
// Number + Number -> сума 1 + 2 // 3 // Boolean + Number -> сума true + 1 // 2 // Boolean + Boolean -> сума false + false // 0 // Number + String -> об'єднання 5 + 'foo' // "5foo" // String + Boolean -> об'єднання 'foo' + false // "foofalse" // String + String -> об'єднання 'foo' + 'bar' // "foobar"
Оператор віднімання проводить операцію віднімання між двома операндами, повертаючи різницю між ними.
Оператор: x - y
5 - 3 // 2 3 - 5 // -2 'foo' - 3 // NaN
Оператор ділення повертає частку своїх операндів, де лівий операнд є діленим, а правий операнд є дільником.
Оператор: x / y
1 / 2 // повертає 0.5 у JavaScript 1 / 2 // повертає 0 у Java // (жодне з чисел не є явно числом з рухомою комою) 1.0 / 2.0 // повертає 0.5 у JavaScript та Java 2.0 / 0 // повертає Infinity у JavaScript 2.0 / 0.0 // також повертає Infinity 2.0 / -0.0 // повертає -Infinity у JavaScript
Оператор множення повертає добуток операндів.
Оператор: x * y
2 * 2 // 4 -2 * 2 // -4 Infinity * 0 // NaN Infinity * Infinity // Infinity 'foo' * 2 // NaN
Оператор остачі повертає остачу від ділення першого операнду на другий. Він завжди приймає знак діленого.
Оператор: var1 % var2
12 % 5 // 2 -1 % 2 // -1 1 % -2 // 1 NaN % 2 // NaN 1 % 2 // 1 2 % 3 // 2 -4 % 2 // -0 5.5 % 2 // 1.5
Оператор піднесення до степеня повертає результат піднесення першого операнду до показника степеня другого операнду. Тобто, var1
var2
у наведеній інструкції, де var1
та var2
є змінними. Оператор піднесення до степеня правоасоціативний. a ** b ** c
дорівнює a ** (b ** c)
.
Оператор: var1 ** var2
У більшості мов, таких як PHP, Python та інших, які мають оператор піднесення до степеня (**), оператор піднесення до степеня має вищий пріоритет, ніж унарні оператори, такі як унарний + та унарний -, але існує кілька винятків. Наприклад, у Bash оператор ** має нижчий пріоритет, ніж унарні оператори. У JavaScript неможливо написати неоднозначний вираз піднесення до степеня, тобто, ви не можете поставити унарний оператор (+/-/~/!/delete/void/typeof
) одразу перед числом основи степеня.
-2 ** 2; // 4 у Bash, -4 у інших мовах. // Це помилка у JavaScript, оскільки операція неоднозначна. -(2 ** 2); // -4 у JavaScript, а наміри автора однозначні.
2 ** 3 // 8 3 ** 2 // 9 3 ** 2.5 // 15.588457268119896 10 ** -1 // 0.1 NaN ** 2 // NaN 2 ** 3 ** 2 // 512 2 ** (3 ** 2) // 512 (2 ** 3) ** 2 // 64
Щоб поміняти знак результату виразу піднесення до степеня:
-(2 ** 2) // -4
Щоб зробити основу степеня у виразі від'ємним числом:
(-2) ** 2 // 4
Заувага: JavaScript також має бітовий оператор ^ (логічний XOR). **
та ^
відрізняються (наприклад: 2 ** 3 === 8
, тоді як 2 ^ 3 === 1
.)
Оператор інкременту збільшує свій операнд (додає одиницю) та повертає його значення.
Оператор: x++ або ++x
// Постфіксний var x = 3; y = x++; // y = 3, x = 4 // Префіксний var a = 2; b = ++a; // a = 3, b = 3
Оператор декременту зменшує свій операнд (віднімає одиницю) та повертає його значення.
Оператор: x-- або --x
// Постфіксний var x = 3; y = x--; // y = 3, x = 2 // Префіксний var a = 2; b = --a; // a = 1, b = 1
Унарний мінус ставиться перед своїм операндом та міняє його знак на протилежний.
Оператор: -x
var x = 3; y = -x; // y = -3, x = 3 // Унарний мінус може перетворити нечислове значення на число var x = "4"; y = -x; // y = -4
Унарний плюс ставиться перед своїм операндом та повертає значення операнду, але намагається перетворити його на число, якщо він не є числом. Хоча унарний мінус (-) також вміє перетворювати нечислові значення, унарний плюс найшвидший та найкращий спосіб перетворити щось у число, тому що він не виконує ніяких інших операцій з числом. Він може перетворювати рядкові представлення цілих чисел та чисел з рухомою комою, а також нерядкові значення true
, false
та null
. Підтримуються цілі числа у десятковому та шістнадцятковому форматах. Підтримуються від'ємні числа (хоча не у шістнадцятковому форматі). Якщо оператор не може розібрати певне значення, він поверне {{jsxref("NaN")}}.
Оператор: +x
+3 // 3 +'3' // 3 +true // 1 +false // 0 +null // 0 +function(val){ return val } // NaN
Специфікація | Статус | Коментар |
---|---|---|
{{SpecName('ESDraft', '#sec-additive-operators')}} | {{Spec2('ESDraft')}} | |
{{SpecName('ES2016', '#sec-postfix-expressions')}} | {{Spec2('ES2016')}} | Доданий Оператор піднесення до степеня. |
{{SpecName('ES2017', '#sec-postfix-expressions')}} | {{Spec2('ES2017')}} | |
{{SpecName('ES2015', '#sec-postfix-expressions')}} | {{Spec2('ES2015')}} | Визначені у кількох розділах специфікації: Адитивні оператори, мультиплікативні оператори, постфіксні вирази, унарні оператори. |
{{SpecName('ES5.1', '#sec-11.3')}} | {{Spec2('ES5.1')}} | Визначені у кількох розділах специфікації: Адитивні оператори, мультиплікативні оператори, постфіксні вирази, унарні оператори. |
{{SpecName('ES1')}} | {{Spec2('ES1')}} | Початкове визначення. |
{{Compat("javascript.operators.arithmetic")}}