Exponentiation (**)

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.

L'opérateur d'exponentiation (**) fournit le résultat obtenu lorsqu'on élève le premier opérande à la puissance indiquée par le second. Il est équivalent Math.pow exception faite que cet opérateur permet également d'utiliser des valeurs BigInt comme opérandes.

Exemple interactif

console.log(3 ** 4);
// Expected output: 81

console.log(10 ** -2);
// Expected output: 0.01

console.log(2 ** (3 ** 2));
// Expected output: 512

console.log((2 ** 3) ** 2);
// Expected output: 64

Syntaxe

js
Opérateur: var1 ** var2;

Description

L'opérateur d'exponentiation est associatif à droite : a ** b ** c est équivalent à a ** (b ** c).

Pour la plupart des langages possédant un opérateur d'exponentiation (ex. PHP, Python, etc.), l'opérateur d'exponentiation possède une précédence plus élevée que les opérateurs unaires (comme l'addition unaire + ou la soustraction unaire -). Il existe toutefois quelques exceptions comme Bash, où ** possède une précédence inférieure à celles des opérateurs unaires.

En JavaScript, il est impossible d'écrire une expression d'exponentiation ambigüe : on ne peut pas placer un opérateur unaire (+/-/~/!/delete/void/typeof) avant le nombre servant de base, cela provoquera une exception SyntaxError.

js
-2 ** 2;
// 4 en Bash, -4 pour d'autres langages.
// Invalide en JavaScript car l'opération est ambigüe.

-(2 ** 2);
// -4 en JavaScript, les parenthèses évitent l'ambiguité.

Attnetion, certains langages de programmation utilisent l'accent circonflexe ^ pour exprimer l'exponentiaion mais JavaScript utilise ce symbole pour l'opérateur binaire OU exclusif (XOR).

Exemples

Exponentiation simple

js
2 ** 3; // 8
3 ** 2; // 9
3 ** 2.5; // 15.588457268119896
10 ** -1; // 0.1
NaN ** 2; // NaN

Associativité

js
2 ** 3 ** 2; // 512
2 ** (3 ** 2); // 512
(2 ** 3) ** 2; // 64

Avec les opérateurs unaires

Pour prendre l'opposé du résultat :

js
-(2 ** 2); // -4

Pour forcer le signe de la base en négatif :

js
(-2) ** 2; // 4

Spécifications

Specification
ECMAScript® 2025 Language Specification
# sec-exp-operator

Compatibilité des navigateurs

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
Exponentiation (**)

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Voir aussi