我运行下面的代码,第一个警报是警报“ a”。单击“确定”后,警报“ b”立即弹出,但我不知道这一切如何工作。
由于将a()分配给var newFunc
,因此当我在newFunc();
之后按Enter时,它将运行函数a(),并且函数a()返回一个匿名函数,但是如何调用该匿名函数以使alert('单击确定后出现B')弹出窗口在警报弹出吗?
function a(){
alert ('A');
return function() {
alert('B');
};
}
var newFunc = a();
newFunc();
最佳答案
函数a
通过a()
警报'A'获取被调用者。它返回一个匿名函数,然后将其存储在变量newFunc
中。为什么?因为您分配了它:var newFunc = a();
然后,您可以将newFunc
视为:
var newFunc = function() {
alert('B');
};
然后,使用
newFunc()
调用返回的函数。它提示“ B”。这称为关闭。查看more about closures,它们非常棒。