js立即调用函数表达式

使用立即调用表达式可以解决闭包中循环里的问题,比如,如果不用立即调用表达式的循环语句执行时,那么i的值始终为img.length,因为i已经执行过了,并在内存中已经保留了。

另外js可以允许()()的格式。用这种方式也可以模拟块级运用域,因为立即执行函数直接就会运行,执行完成之后会自动释放内部变量。

for (var i = 0, len = img.length; i < len; i++) {

                //使用立即调用的函数表达式,为了获取i的不同值

                (function (i) {

                    imgs[i].onmouseover = function () {

                        //执行语句

                    }

                })(i);

            }
原文地址:https://www.cnblogs.com/y8932809/p/5395592.html