核心提示:我理解的闭包,之前的一个星期都被闭包搞迷惑了,看了很多博客,知乎,文献。最后在一段代码下,理解清楚是什么回事。《深入理解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。
函数以及他所连接的周围作用域中的变量即为闭包
我的理解就是,当一个函数中访问了外部函数的值,并将它返回出来,实现与外部有交流。
闭包的用处就是当我想封装掉一个变量,但我又想有个入口可以访问它的时候,就使用闭包。