我知道此代码会打印2条,原因是起吊有杂物,但我不完全了解该怎么做。

我将列出我所理解的所有内容,如果您能在每个答案旁边回答是或否,将不胜感激。然后,您可以添加任何其他信息。

1)let b = innerMagic()这行引用了innerMagic()函数,该函数返回a;

2)现在,我们为变量a分配了值3,这意味着return b应该返回3。但是,目前将变量设置为2,因此它返回2。您不能在变量之前调用变量已分配。



function magic() {
  let a = 1;
  a = 2;
  let b = innerMagic();
  a = 3;

  return b;

  function innerMagic() {
    return a;
  }
}

console.log(magic())

最佳答案

innerMagic在调用时从外部范围获取a的值。因此,当调用innerMagic时,a的值为2。它将此值(2)返回到b,然后返回b(2),这就是您要打印的内容

09-16 16:46