【问题标题】:Closure function using outer variable instead of nearest variable [duplicate]使用外部变量而不是最近变量的闭包函数[重复]
【发布时间】:2023-01-21 21:19:11
【问题描述】:

我不明白为什么函数在调用回调时采用外部作用域变量而不是最近的变量。

function outerFn(){
    let x = 1;
    function log(){
      console.log(x);
    };
    function run(fn){
      let x = 100;
      fn();
    }
    run(log);
};
outerFn();

我期待运行记录 100 而不是 1。

【问题讨论】:

  • 函数关闭的变量集等取决于函数所在的位置创建,而不是它的位置称为. log 关闭外部 x。它在有内部 x 的上下文中被调用的事实是无关紧要的,它不会在调用它的环境中关闭。 (想象一下,如果它做到了!任何您调用的函数可以访问您调用它的范围内的任何内容!)

标签: javascript callback scope


【解决方案1】:

“x”正在被您的“log()”函数关闭。您的“log()”函数无权访问“run()”中声明的“x”。

【讨论】:

  • 这是一个非常通常重复的重复问题。请不要发布重复的答案。 (您可以使用“删除”链接删除答案。)
猜你喜欢
  • 2021-10-05
  • 2018-11-24
  • 2021-06-20
  • 1970-01-01
  • 2020-10-16
  • 1970-01-01
  • 1970-01-01
  • 2012-08-27
  • 1970-01-01
相关资源
最近更新 更多