立即执行函数

1、立即执行函数是什么?

声明一个匿名函数,立马调用这个匿名函数。下面就是一个立即执行函数:

(function() {console.log('我就是立即执行函数')})()        


2、它有什么用呢?

它的作用就是创建一个独立的作用域,不让外面访问,避免变量污染。

下面以一个常见的面试题为例:

var lis = document.getElementsByTagName('li')
for (var i=0; i<10; i++) {
    lis[i].onClick = function() {console.log(i)}
}
/* 只会打印出很多10,为什么呢? 因为 i 声明提前之后,它的作用域就是最外面的作用域,而不是给每个 li 都单独创建一个作用域 i。那么怎么让它打印出0,1。。。这些数字呢?这时候就该立即执行函数出场了,修改如下
*/
var lis = document.getElementsByTagName('li')
for (var i=0; i<10; i++) {
    !(function (i) {
        lis[i].onClick = function () {
            console.log(i)
        }
    })(i)
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容