javascript如何在回调中引用变量?

how does javascript reference a variable inside a callback?

本文关键字:引用 变量 回调 javascript      更新时间:2023-09-26

如果我有一些javascript代码,比如:

Foo.init = function(options) {
  Bar.set_listener('some_event', function() {
    console.log(options);
  });
};

,我调用Foo。init带有一些选项,比如Foo。init({whatever: 'hi'})和那个Bar。Set_listener方法接受回调并存储它,然后在稍后触发'some_event'时调用它....

console.log将打印未定义或{whatever: 'hi'} ?答案似乎是{whatever: 'hi'},但这让我很困惑。这个回调调用时如何知道如何引用传入Foo.init的选项变量?

内部函数引用外部函数中定义的状态的能力称为闭包。这是大多数允许lambdas或函数值的语言中存在的特性。

它是如何实现的值得写一篇比Stack Overflow的答案长得多的文章。但总而言之,只要存在引用外部函数的内部函数,Javascript运行时就会持久化外部函数中定义的值。