考虑以下代码。我不确定我完全理解词法作用域,但是,除非我误解了我所阅读的所有内容,否则内部函数只能引用在同一上下文中声明的外部变量。
换句话说,重要的是这些函数的诞生地,而不是它们被调用的地方。在我上面的示例代码中,“a”的变量值在test函数返回时与在test2中声明并赋值为5的“a”变量不同。就好像test2中的“a”对于test来说是一个外部变量一样。
我是否理解正确或者还有什么我没有考虑到的?
let a = 7;
function test() {
return a;
}
function test2() {
let a = 5;
return test()
}
console.log(test2())
a = 5
的作用域在test2()内部,而在外部则始终为7
,使用let
。 - Devsi Odedra