Арифметичні оператори приймають числові значення (або літерали, або змінні) в якості операндів та повертають єдине числове значення. Стандартними арифметичними операторами є додавання (+), віднімання (-), множення (*) та ділення (/).
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Додавання (+)
Оператор додавання повертає суму числових операндів або об'єднання рядків.
Синтаксис
Оператор: 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
Піднесення до степеня (**)
Оператор піднесення до степеня повертає результат піднесення першого операнду до показника степеня другого операнду. Тобто, var1var2 у наведеній інструкції, де 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), тоді він збільшує значення та повертає його після збільшення.
Синтаксис
Оператор: x++ або ++x
Приклади
// Постфіксний var x = 3; y = x++; // y = 3, x = 4 // Префіксний var a = 2; b = ++a; // a = 3, b = 3
Декремент (--)
Оператор декременту зменшує свій операнд (віднімає одиницю) та повертає його значення.
- Якщо оператор використовується постфіксно, після операнду (наприклад, x--), тоді він зменшує значення та повертає його до зменшення.
- Якщо оператор використовується префіксно, перед операндом (наприклад, --x), тоді він зменшує значення та повертає його після зменшення.
Синтаксис
Оператор: 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. Підтримуються цілі числа у десятковому та шістнадцятковому форматах. Підтримуються від'ємні числа (хоча не у шістнадцятковому форматі). Якщо оператор не може розібрати певне значення, він поверне NaN.
Синтаксис
Оператор: +x
Приклади
+3 // 3
+'3' // 3
+true // 1
+false // 0
+null // 0
+function(val){ return val } // NaN
Специфікації
| Специфікація | Статус | Коментар |
|---|---|---|
| ECMAScript (ECMA-262) | Living Standard | |
| ECMAScript 2016 (ECMA-262) | Standard | Доданий Оператор піднесення до степеня. |
| ECMAScript 2017 (ECMA-262) | Standard | |
| ECMAScript 2015 (6th Edition, ECMA-262) | Standard | Визначені у кількох розділах специфікації: Адитивні оператори, мультиплікативні оператори, постфіксні вирази, унарні оператори. |
| ECMAScript 5.1 (ECMA-262) | Standard | Визначені у кількох розділах специфікації: Адитивні оператори, мультиплікативні оператори, постфіксні вирази, унарні оператори. |
| ECMAScript 1st Edition (ECMA-262) | Standard | Початкове визначення. |
Сумісність з веб-переглядачами
| Desktop | Mobile | Server | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Addition (+) | Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1 | IE Full support 3 | Opera Full support 3 | Safari Full support 1 | WebView Android Full support 1 | Chrome Android Full support 18 | Firefox Android Full support 4 | Opera Android Full support 10.1 | Safari iOS Full support 1 | Samsung Internet Android Full support 1.0 | nodejs Full support 0.1.100 |
Decrement (--) | Chrome Full support 2 | Edge Full support 12 | Firefox Full support 1 | IE Full support 3 | Opera Full support 3 | Safari Full support 4 | WebView Android Full support 1 | Chrome Android Full support 18 | Firefox Android Full support 4 | Opera Android Full support 10.1 | Safari iOS Full support 3.2 | Samsung Internet Android Full support 1.0 | nodejs Full support 0.1.100 |
Division (/) | Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1 | IE Full support 3 | Opera Full support 3 | Safari Full support 1 | WebView Android Full support 1 | Chrome Android Full support 18 | Firefox Android Full support 4 | Opera Android Full support 10.1 | Safari iOS Full support 1 | Samsung Internet Android Full support 1.0 | nodejs Full support 0.1.100 |
Exponentiation (**) | Chrome Full support 52 | Edge Full support 14 | Firefox Full support 52 | IE No support No | Opera Full support 39 | Safari Full support 10.1 | WebView Android Full support 51 | Chrome Android Full support 52 | Firefox Android Full support 52 | Opera Android Full support 41 | Safari iOS Full support 10.3 | Samsung Internet Android Full support 6.0 | nodejs
Full support
7.0.0
|
Increment (++) | Chrome Full support 2 | Edge Full support 12 | Firefox Full support 1 | IE Full support 3 | Opera Full support 3 | Safari Full support 4 | WebView Android Full support 1 | Chrome Android Full support 18 | Firefox Android Full support 4 | Opera Android Full support 10.1 | Safari iOS Full support 3.2 | Samsung Internet Android Full support 1.0 | nodejs Full support 0.1.100 |
Multiplication (*) | Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1 | IE Full support 3 | Opera Full support 3 | Safari Full support 1 | WebView Android Full support 1 | Chrome Android Full support 18 | Firefox Android Full support 4 | Opera Android Full support 10.1 | Safari iOS Full support 1 | Samsung Internet Android Full support 1.0 | nodejs Full support 0.1.100 |
Remainder (%) | Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1 | IE Full support 3 | Opera Full support 3 | Safari Full support 1 | WebView Android Full support 1 | Chrome Android Full support 18 | Firefox Android Full support 4 | Opera Android Full support 10.1 | Safari iOS Full support 1 | Samsung Internet Android Full support 1.0 | nodejs Full support 0.1.100 |
Subtraction (-) | Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1 | IE Full support 3 | Opera Full support 3 | Safari Full support 1 | WebView Android Full support 1 | Chrome Android Full support 18 | Firefox Android Full support 4 | Opera Android Full support 10.1 | Safari iOS Full support 1 | Samsung Internet Android Full support 1.0 | nodejs Full support 0.1.100 |
Unary negation (-) | Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1 | IE Full support 3 | Opera Full support 3 | Safari Full support 1 | WebView Android Full support 1 | Chrome Android Full support 18 | Firefox Android Full support 4 | Opera Android Full support 10.1 | Safari iOS Full support 1 | Samsung Internet Android Full support 1.0 | nodejs Full support 0.1.100 |
Unary plus (+) | Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1 | IE Full support 3 | Opera Full support 4 | Safari Full support 1 | WebView Android Full support 1 | Chrome Android Full support 18 | Firefox Android Full support 4 | Opera Android Full support 10.1 | Safari iOS Full support 1 | Samsung Internet Android Full support 1.0 | nodejs Full support 0.1.100 |
Legend
- Full support
- Full support
- No support
- No support
- User must explicitly enable this feature.
- User must explicitly enable this feature.