一段JS 代码 好像是关于资源回收的,不懂请教达人,代码贴出

(function () {

var i = 0;

return function() {

window.alert(i++);

};

})()()();
这样一段代码 ,我 开始看代码时候以为会输出 1 ,但是 实际上 弹出窗口却是输出0 不知道为什么 ,

还有 ,这个代码最后 有三个空括号 不知道这三个空括号 分别是干啥用的, 求解答 谢谢

可以拆分成这样来理解
[code="java"]

var fun1 = function(i){
window.alert(i++);
}

var fun2 = function(){
var i = 0;
fun1(i);
}
[/code]

第1个括号是声明匿名函数的方式。
第2个括号是运行该函数
第3个的确可能是手误,多余的。

至于打印的是0不是1,是因为i++的运算顺序,i++,是i先用于运算,然后自增。++i是先自增,然后用于运算

你可以这样理解
1 运行匿名函数 里面return 方法的函数
var fun=(function () {

var i = 0;

return function() {

window.alert(i++);

};

})();
2、 运行它
fun();
第三个括号应该是写错了 多余的

fun可以运行多次
再运行
fun();这时就是1了

其实这是Js的闭包

alert(i++)是先弹出i的值再对i的值加1