Піднесення до степеня (**)
Оператор піднесення до степеня (**
) повертає результат піднесення першого операнду до показника степеня другого операнду.
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.
Синтаксис
Оператор: var1 ** var2
Опис
Оператор піднесення до степеня правоасоціативний. a ** b ** c
дорівнює a ** (b ** c)
.
У більшості мов, таких як PHP, Python та інших, які мають оператор піднесення до степеня (**
), оператор піднесення до степеня має вищий пріоритет, ніж унарні оператори, такі як унарний +
та унарний -
, але існує кілька винятків. Наприклад, у Bash оператор **
має нижчий пріоритет, ніж унарні оператори.
У JavaScript неможливо написати неоднозначний вираз піднесення до степеня, тобто, ви не можете поставити унарний оператор (+/-/~/!/delete/void/typeof
) одразу перед числом основи степеня.
-2 ** 2;
// 4 у Bash, -4 у інших мовах.
// Це помилка JavaScript, оскільки операція неоднозначна.
-(2 ** 2);
// -4 у JavaScript, а наміри автора однозначні.
Зауважте, що деякі мови програмування використовують символ карет ^ для піднесення до степеня, але JavaScript використовує цей символ як оператор виключного побітового АБО (XOR).
Приклади
Базове піднесення до степеня
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
Специфікації
Специфікація |
---|
ECMAScript (ECMA-262) The definition of 'Exponentiation operator' in that specification. |
Сумісність з веб-переглядачами
BCD tables only load in the browser