在JavaScript中,某些运算符在其他运算符之前进行处理:
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 ===
MDN(Mozilla Developer Network)提供了所有操作符的完整排序列表,包括它们的优先级……但没有 await
:
await getFoo() * 2; // await (getFoo() * 2) or (await getFoo()) * 2?
await getFoo() === 5; // await (getFoo() === 5) or (await getFoo()) === 5?
(编辑: MDN现在已经包含await
;当我最初写下这个问题时,它还没有。)
有人能解释一下在await
之前/之后处理哪些运算符吗?
现在我感觉我不得不添加一堆可能不必要的括号,因为我不确定在await
之前/之后会处理什么。而且虽然我知道我应该能够查找这个答案,但即使是MDN(我认为是文档的黄金标准)也没有答案。
await
期望在其后跟随一个表达式,但并未提供关于优先级如何处理的线索。是时候进行实验了。 - Nickawait
与任何一元运算符一样处理。 - raina77ow