吊装如何应用于此 JavaScript 代码?



我知道由于各种吊装,此代码打印 2,但我不完全明白如何。

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

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

2)我们现在已经将值3分配给变量a,这意味着返回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),这就是你打印的内容

"let b = innerMagic() 引用 innerMagic() 函数,该函数返回 a;" 这不太正确,它返回 a 的值,即 2。

此时,ab都保持值 2。 然后a更新为值 3,但b仍具有值 2。

有关值与引用的解释,请查看这篇关于在 Javascript 中解释值与引用的文章

最新更新