gpt4 book ai didi

javascript - 让变量作用域

转载 作者:行者123 更新时间:2023-11-29 16:46:07 25 4
gpt4 key购买 nike

以下代码将输出“1”。但是,关键字“let”不应该使 x 成为全局变量,从而使其对 das() 不可见吗? let 应该将变量的范围限制为仅声明它们的 block ,但在这里,我看到内部函数可以访问“let”变量,即使 x 声明在其范围之外。这怎么可能?

function letTest() {
function das () {
console.log(x);
// How does this function have access to a let variable declared outside its scope?
}

let x = 1;
das();
}
letTest();

最佳答案

这是一种思考 let 工作方式的方法:

  1. let 开始。
  2. 在相同的嵌套级别,通过源代码进行备份/上溯,找到第一个 {
  3. 现在从let中找到对应的

这为您提供了变量可见的范围。如果函数定义出现在该范围内,那很好;该变量对该函数中的代码可见。

现在,有点有点奇怪的是,在您的示例中,变量看起来在声明之前在作用域中使用。这就是引用出现在声明之前这一事实变得更有趣的地方。

通常,如果作用域中的代码在 let 实际发生之前引用了 let 声明的变量,那就是一个错误。但是,这是运行时的事情,而不是语法的事情。在您的情况下,在运行时 let 将在调用嵌套函数时“发生”。

关于javascript - 让变量作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41337338/

25 4 0
文章推荐: javascript - 如何将 SVG 附加到
文章推荐: Javascript递归计数
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com