您现在的位置:首页 >> 前端 >> 内容

我理解的闭包

时间:2017/3/16 9:29:00 点击:

  核心提示:我理解的闭包,之前的一个星期都被闭包搞迷惑了,看了很多博客,知乎,文献。最后在一段代码下,理解清楚是什么回事。《深入理解JavaScript》里面的例子var result = [];for(var ...

我理解的闭包,之前的一个星期都被闭包搞迷惑了,看了很多博客,知乎,文献。最后在一段代码下,理解清楚是什么回事。
《深入理解JavaScript》里面的例子

var result = [];
for(var i=0; i<5; i++){
    result.push(function(){return i});
}
console.log(result[1]());

输出i会是5而不是1。
首先先理解,
这里的数组存储的是5个函数,而不是i值,
当调用这个函数的时候,才会去找那个i值是多少,因为JS没有代码块的概念,这里i是全局函数,i就是循环5次后的5。

函数以及他所连接的周围作用域中的变量即为闭包
我的理解就是,当一个函数中访问了外部函数的值,并将它返回出来,实现与外部有交流。
闭包的用处就是当我想封装掉一个变量,但我又想有个入口可以访问它的时候,就使用闭包。

作者:网络 来源:sinat_3124