javascript - 闭包和模块有什么区别?

标签 javascript function

我知道像这样的模块:

function User(){
    var username, password;

    function doLogin(user, pw){
        username = user;
        password = pw;
    };
    var publicAPI = {
        login: doLogin
    };
    return publicAPI;
}

内部有一个闭包:doLogin,并记住 内部的变量 usernamepassword 的值用户,是什么让它成为“闭包”。我不太明白的是,如果每当我们使用闭包时,我们都是在使用模块模式吗?或者一旦我将 User 的函数保存在 var User = function(){... 之类的变量中就不是模块...请记住我正在学习js。

最佳答案

您已经为 User 实现了一个工厂函数。

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

(揭示)模块模式(和其他)使用闭包来实现私有(private)状态的封装。

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

关于javascript - 闭包和模块有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33825846/

相关文章:

function - 在 Julia 中将命名元组向量的元素提取到矩阵中

python - 要求正整数并验证输入的简单函数

javascript - 带有连接线的 Threejs 粒子系统。编程逻辑?

javascript - HTML 按钮没有点击

javascript - 动态更新网页内容而不刷新?

javascript - 表单时隐藏元素(菜单选择选项为空)

javascript - 如何迭代多个选择并根据数据库中的值设置选项?

r - 函数中的术语是什么意思?

php - 是否可以制作一个可以接受任意数量参数的 PHP 函数?

javascript - 如果 onchange 为 true,如何运行函数