La précédence des opérateurs détermine l'ordre dans lequel les opérateurs sont évalués. Les opérateurs avec la plus haute précédence sont évalués en premier.
Ainsi, l'opérateur de multiplication (« *
») (ayant une précédence plus haute que l'opérateur d'addition (« +
»)) est évalué en premier et l'expression 6 * 4 + 2
renverra 26 (et pas 36).
console.log(3 + 4 * 5); // 3 + 20
// Expected output: 23
console.log(4 * 3 ** 2); // 4 * 9
// Expected output: 36
let a;
let b;
console.log((a = b = 5));
// Expected output: 5
Associativité
L'associativité détermine l'ordre dans lequel des opérateurs de même précédence sont évalués. Par exemple, considérons l'expression suivante :
Une associativité de gauche (gauche à droite) signifie qu'elle est évaluée comme (a OP b) OP c
, tandis qu'une associativité de droite (droite à gauche) signifie qu'elle est interprétée comme a OP (b OP c)
. Les opérateurs d'affectation sont associatifs de droite, on peut donc écrire :
avec le résultat attendu que a
et b
obtiennent la même valeur de 5. C'est parce que l'opérateur d'affectation retourne la valeur qu'il affecte. D'abord, b
est défini à la valeur 5. Ensuite, a
est défini avec la valeur renvoyée par b = 5
qui est 5.
3 > 2 && 2 > 1;
// renvoie true
3 > 2 > 1;
// renvoie false car 3 > 2 vaut true et que true > 1 vaut false
// En ajoutant des parenthèses, on y voit plus clair (3 > 2) > 1
Tableau
Le tableau suivant est classé de la plus haute (19) à la plus basse (1) précédence.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4