【发布时间】: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