我知道此代码会因杂物悬挂而显示2,但是我不完全了解该怎么做。
我将列出我所理解的所有内容,如果您能在每个答案旁边回答是或否,将不胜感激。然后,您可以添加任何其他信息。
1)让b = innerMagic()的行引用了innerMagic()函数,该函数返回a;
2)现在,我们为变量a分配了值3,这意味着return b应该返回3。但是,此时将变量设置为2,因此它返回2。您不能在a之前调用变量变量在分配之前。
function magic() {
let a = 1;
a = 2;
let b = innerMagic();
a = 3;
return b;
function innerMagic() {
return a;
}
}
console.log(magic())
答案 0 :(得分:1)
innerMagic在调用时从外部范围获取a的值。因此,当调用innerMagic时,a的值为2。它将此值(2)返回到b,然后返回b(2),这就是您要打印的内容
答案 1 :(得分:1)
“让b = innerMagic()引用innerMagic()函数,该函数返回a;”那不是很正确,它返回的值为2。
此时,a
和b
都保持值为2。a
随后被更新为值3,但是b
仍具有值2。
要了解价值与参考的关系,请参阅Explaining Value vs. Reference in Javascript
上的这篇文章