javascript - manejo - tabla de precedencia de operadores
¿Cuál es la precedencia del operador de esperar? (1)
En Javascript ciertos operadores son procesados antes que otros:
1 + 2 * 3
// 1 + (2 * 3)
// 7 because * has higher precedence than +
1 === 0 + 1
// 1 === (0 + 1)
// true because + has a higher precedence than ===
El MDN tiene un desglose completo de todos los operadores y su precedencia ... excepto en await
.
await getFoo() * 2; // await (getFoo() * 2) or (await getFoo()) * 2?
await getFoo() === 5; // await (getFoo() === 5) or (await getFoo()) === 5?
¿Puede alguien explicar qué operadores se procesan antes / después de la espera?
En este momento, siento que debo agregar un par de paréntesis que probablemente no sean necesarios porque no estoy seguro de qué se manejará antes / después de la await
. Y aunque sé que debería poder buscar esto, incluso MDN (el estándar de oro de la documentación IMHO) no tiene la respuesta.
Una AwaitExpression es una UnaryExpression y tiene la misma prioridad que delete
, void
, typeof
, +
, -
, ~
y !
, vinculante más fuerte que cualquier operador binario.
Este es un yield
diferente al que tiene una prioridad más baja que cualquier otra cosa, excepto el operador de coma. Esta decisión de diseño se tomó porque tanto el yield a+b
como la await a + await b
son escenarios considerados más comunes que (yield a) + (yield b)
y a la await (a + b)
.