var myObject = (function (){
var value = 0;
return {
increment: function (inc){
value += typeof inc === 'number' ? inc : 1;
},
getValue: function (){
return value;
}
};
}());
请问一下这个闭包代码的最后的这个小括号有什么意义和作用,谢谢。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
大概类似于:
这是个借助了闭包的单体,小括号的作用是为了立即执行这个匿名函数,即
IIFE代码可以缩略成以下内容:
可以看到,在首尾的()之间定义了一个函数,并且调用了该函数,并且返回了一个对象:
赋值给了MyObject。
首先,你的疑问应该是对以下这种结构不熟悉:
这种结构不叫闭包,她叫IIFE,中文也叫“立即执行函数表达式”,准确说和闭包无关。
在来谈闭包,你的示例中
value本来是这个“立即执行函数表达式”里的变量,为了能在这个函数表达式外部也能使用这个变量,函数表达式里返回了一个对象,该对象包含increment和getValue两个方法,通过这两个方法,函数表达式外部也可以操作value的变化了,这种把内部一个属性通过函数暴露给外部环境使用的技巧,我们称之为闭包(原谅我的语句可能不够专业,你就简单理解下吧)。如果需要专业解释的,最好还是google,闭包
表示立即执行该函数,楼主其实就是想调用里面return后的对象方法, 如果不执行,单体模式,并不能够发挥它的作用啊。
定义完成后自动执行,写法: