我知道像这样的模块:
function User(){
var username, password;
function doLogin(user, pw){
username = user;
password = pw;
};
var publicAPI = {
login: doLogin
};
return publicAPI;
}
在其中有一个闭包:doLogin
,并且正在记住username
内的变量password
和User
的值,这是一个“闭包”。我不太明白的是,无论何时我们使用闭包,我们都在使用模块模式?或者一旦我将User
的函数保存在像var User = function(){...
之类的变量中就不是一个模块......请记住我正在学习js。
答案 0 :(得分:5)
您已为=IIf([EmployeeValue]>0,"p",IIf([EmployeeValue]<0,"q","tu"))
实施了工厂功能。
你“几乎”使用了揭示模块模式。大多数人会说需要立即调用显示模块模式。模块模式通常用于代码组织。你在这里所拥有的是一个对象工厂。
(揭示)模块模式(和其他模块)使用闭包来实现私有状态的封装。
只要定义了函数,就会创建一个闭包。它们是JavaScript的语言特性,可以更轻松地处理函数。
答案 1 :(得分:0)
闭包是一种从封闭范围中关闭(或捕获)信息或状态的方法。基本上它是一种延长变量寿命的方法。
模块是一种隐藏外部世界的实现和状态的方法。
因此,doLogin()
正在关闭username
和password
,从而延长其生命周期。 publicAPI
引用的对象隐藏了用户
doLogin()
实现