首页 > 代码库 > 对闭包的理解

对闭包的理解

用一句通俗的话来说,闭包就是有权访问另一个函数作用域的变量的函数。

 

function cerateFunctions() {    var result = new Array();    for (var i = 0; i < 10; i++) {        result[i] = function() {            return i;        }    }    return result}

这个结果返回的函数i一直是10,那怎么才能符合我们的预期呢?

function cerateFunctions() {    var result = new Array();    for (var i = 0; i < 10; i++) {        result[i] = function(num) {            return function() {                return num;            }        }(i);    }    return result}

这样就能正确的符合我们的预期了。

顺便说一句,闭包这个名字真的很坑爹,我年轻的时候,一度以为

(function() {    })();

是闭包,其实它是块级作用域。

对闭包的理解