返回函数的函数

248 阅读1分钟

我们都知道,函数始终都会有一个返回值,即便不是显式返回,它也会隐式返回一个 undefined 。

既然函数能返回一个唯一值,那么这个值就也有可能是另一个函数。

function a(){
    alert('A!');
    return function(){
        alert('B!');    
    };
};

在这个例子中,函数 a( ) 会在执行它的工作(弹出 A!)之后返回另一个函数。而所返回的函数又会去执行另外一些事情(弹出 B!)。我们只需将该返回值赋值给某个变量,然后,就可以像使用一般函数那样调用它了:

var newFunc = a();
newFunc();

如你所见,上面第一行执行的是 alert('A!') ,第二行才是 alert('B!') 。

如果,你想让返回的函数立即执行,也可以不用将它赋值给变量,直接在该调用后面再加一对括号即可,效果是一样的:

a()();

本文摘自《JavaScript面向对象编程指南》,分享的目的仅供个人学习和理解,如需转载请备注本文出处,谢谢!