首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >块作用域如何访问封闭作用域

块作用域如何访问封闭作用域
EN

Stack Overflow用户
提问于 2021-10-07 05:22:14
回答 1查看 24关注 0票数 0

我确实理解,由于词法作用域,块作用域可以访问封闭作用域变量。但我不明白的是它到底是如何工作的。例如:

代码语言:javascript
复制
function first(){
  let i=10;
  function second(){
    let j=20;
    console.log(i);
    if(j==20){
    console.log(i);
  } 
  }
  second();
}

第一个console.log()在查找变量对象中的作用域链后获得i的值。但是,块中的console.log()如何访问变量i,因为它不创建执行上下文,因此没有作用域链。

EN

回答 1

Stack Overflow用户

发布于 2021-10-07 06:08:51

js引擎将提升(通过提升)变量和函数声明存储到声明该变量或函数的特定作用域的顶部。赋值操作不会被提升。因此引擎知道在哪个作用域变量或函数中声明。

https://medium.com/@venomnert/how-js-engine-reads-your-code-df3cd36e4192

上面的文章描述了js引擎如何找到变量和其他一些概念,这些概念有助于理解闭包和代码的执行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69475835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档