我试图理解Javascript模块模式,但我无法弄清楚添加到匿名函数的参数和最后添加的参数之间的区别。那么有人可以帮助我理解两者之间的区别吗?谢谢
下面是一个模块模式示例,它实现了匿名。函数参数(JQ、Yahoo)和模块参数显示在最后(JQuery、Yahoo)。
var modularpattern = (function(JQ, Yahoo) {
var sum = 0 ;
return {
add:function() {
sum = sum + 1;
return sum;
},
reset:function() {
return sum = 0;
}
}
}(JQuery, Yahoo));
最佳答案
从逻辑上讲,您的代码等于:
var func = function(JQ, Yahoo) { // Section 1
var sum = 0 ;
return {
add:function() {
sum = sum + 1;
return sum;
},
reset:function() {
return sum = 0;
}
}
}
var modularpattern = func(JQuery, Yahoo); // Section 2
所以在第 1 部分
- JQ:用作输入参数的函数局部变量
- 雅虎:与 JQ 完全相同
在第 2 部分(在本部分中,您实际上调用了该函数)
- JQuery:全局范围内的现有对象
- Yahoo:与 JQuery 完全相同
为什么开发者要这样实现:
所有全局对象都可以在函数作用域内访问,但访问局部变量比全局变量快得多。 (这称为本地化)
关于Javascript 模块模式导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25591815/