这两个异步三元语句有什么区别?

What is the difference between these two async ternary statements?

有人能帮我理解下面这两个三元语句之间的区别吗?

const variables = await (conditional ? asyncFunctionOne() : asyncFunctionTwo());
    
const variables = conditional ? await asyncFunctionOne() : await asyncFunctionTwo();

乍一看,它们做同样的事情,但我的某些部分认为它们的执行顺序不同。

如果这是一个函数调用,会有一点不同:

const variables = doSomething(conditional ? functionOne() : functionTwo());
    
const variables = conditional ? doSomething(functionOne()) : doSomething(asyncFunctionTwo());

const temp = conditional ? functionOne() : asyncFunctionTwo();
const variables = doSomething(temp);

这些乍一看可能是等同的,但如果 conditional 甚至 functionOne/functionTwo 中的代码确实更改了 doSomething 变量,则不然。

但是,await不是函数而是语法,它的含义是在解析和编译代码时确定的,而不是在评估它和解析变量时确定的。所以你问题中的两行是绝对等价的。