标签:
用一句通俗的话来说,闭包就是有权访问另一个函数作用域的变量的函数。
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() { })();
是闭包,其实它是块级作用域。
标签:
原文地址:http://www.cnblogs.com/ljlbxy/p/5840752.html