异步/等待:初始化之前无法访问变量(javscript)

bug*_*syb 0 javascript asynchronous async-await es6-promise

当我运行下面的代码时,出现以下错误:

ReferenceError: Cannot access 'bar' before initialization

有人可以帮助我理解为什么会发生这种情况吗?据我所知,该foo函数应该等到承诺解决(因为我await在移动到该console.log(bar)行之前使用。我在这里错过了什么?

function qux() {
  return Math.random();
}

async function bar() {
  let result = await qux();
  return result > 0.5;
}

async function foo() {
  let bar = await bar();
  console.log(bar);
}

foo();
Run Code Online (Sandbox Code Playgroud)

Dex*_*eep 7

问题出在函数上foo()

bar已经是一个函数,并且您在调用它时尝试分配给它,这可能不是您想要做的。

更改其中之一的名称。

function qux() {
  return Math.random();
}

async function bar() {
  let result = await qux();
  return result > 0.5;
}

async function foo() {
  let x = await bar();
  console.log(x);
}

foo();
Run Code Online (Sandbox Code Playgroud)