所以,如果我有一些像这样的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变量?
答案 0 :(得分:2)
内部函数引用外部函数中定义的状态的能力称为闭包。这是大多数语言中允许使用lambdas或函数值的功能。
它的实现方式比Stack Overflow中的答案要长得多。但总的来说,只要存在引用它们的内部函数,Javascript运行时将持久保留外部函数中定义的值。