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

时间:2013-03-05 23:14:04

标签: javascript

所以,如果我有一些像这样的javascript:

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

我用Foo.init({whatever:' hi'})之类的选项调用Foo.init,并且Bar.set_listener方法接受回调并存储它,然后在稍后调用它时间' some_event'被触发....

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

1 个答案:

答案 0 :(得分:2)

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

它的实现方式比Stack Overflow中的答案要长得多。但总的来说,只要存在引用它们的内部函数,Javascript运行时将持久保留外部函数中定义的值。