Precedencia y orden de los operadores en JavaScript
Si una expresión tiene más de un operador, el orden de ejecución se define por su precedencia o, en otras palabras, existe un orden de prioridad implícito entre los operadores.
Desde la escuela, todos sabemos que la multiplicación en la expresión 1 + 2 * 2 debe calcularse antes de la suma. Eso es exactamente la prioridad. Se dice que la multiplicación tiene una precedencia más alta que la suma.
Los paréntesis anulan cualquier precedencia, por lo que si no estamos satisfechos con el pedido, podemos usarlos, como: (1 + 2) * 2.
Hay muchos operadores en JavaScript. Cada operador tiene un número de precedencia correspondiente. El que tiene el número más grande se ejecuta primero. Si la prioridad es la misma, el orden de ejecución es de izquierda a derecha.
La siguiente tabla esta ordenada de la precedencia más alta (0) a la más baja (18).
Precedencia | Tipo de operador | Asociatividad | Operador |
---|---|---|---|
0 | grouping | n/a | ( …) |
1 | member | left-to-right | ….… |
…[…] |
|||
new | n/a | new … (…) |
|
2 | function call | left-to-right | …(…) |
new | right-to-left | new … |
|
3 | increment | n/a | …++ |
decrement | n/a | …-- |
|
4 | logical-not | right-to-left | ! … |
bitwise not | right-to-left | ~ … |
|
unary + | right-to-left | + … |
|
unary negation | right-to-left | - … |
|
typeof | right-to-left | typeof … |
|
void | right-to-left | void … |
|
delete | right-to-left | delete … |
|
5 | multiplication | left-to-right | * |
division | left-to-right | / |
|
modulus | left-to-right | % |
|
6 | addition | left-to-right | + |
subtraction | left-to-right | - |
|
7 | bitwise shift | left-to-right | << |
>> |
|||
>>> |
|||
8 | relational | left-to-right | < |
<= |
|||
> |
|||
>= |
|||
in | left-to-right | in |
|
instanceof | left-to-right | instanceof |
|
9 | equality | left-to-right | == |
!= |
|||
=== |
|||
!== |
|||
10 | bitwise-and | left-to-right | & |
11 | bitwise-xor | left-to-right | ^ |
12 | bitwise-or | left-to-right | | |
13 | logical-and | left-to-right | && |
14 | logical-or | left-to-right | || |
15 | conditional | right-to-left | … ? … : … |
16 | assignment | right-to-left | = |
+= |
|||
-= |
|||
*= |
|||
/= |
|||
%= |
|||
<<= |
|||
>>= |
|||
>>>= |
|||
&= |
|||
^= |
|||
|= |
|||
17 | yield | right-to-left | yield … |
18 | comma | left-to-right | , |
Written by Tutor