闭包和模块有什么区别?

Cam*_*hez 8 javascript function

我知道像这样的模块:

function User(){
    var username, password;

    function doLogin(user, pw){
        username = user;
        password = pw;
    };
    var publicAPI = {
        login: doLogin
    };
    return publicAPI;
}
Run Code Online (Sandbox Code Playgroud)

在它内部有一个闭包:doLogin并且正在记住变量的值usernamepassword里面的变量User,这使得它成为一个"闭包".我不太明白的是,无论何时我们使用闭包,我们都在使用模块模式?或者一旦我保存User变量的功能就像var User = function(){...不是一个模块......请记住我正在学习js.

Ben*_*Ben 6

您已为Users 实现了工厂功能.

你"几乎"使用了揭示模块模式.大多数人会说需要立即调用显示模块模式.模块模式通常用于代码组织.你在这里所拥有的是一个对象工厂.

闭包由(显示)模块模式(和其他模块)使用以实现私有状态的封装.

只要定义了函数,就会创建一个闭包.它们是JavaScript的语言特性,可以更轻松地处理函数.