首页 > 代码库 > javascripts闭包的理解
javascripts闭包的理解
理解闭包的第一步是理解函数的立即执行。看下面的例子:
1 function count() { 2 var arr = []; 3 for (var i=1; i<=3; i++) { 4 arr.push((function (n) { 5 return function () { 6 return n * n; 7 } 8 })(i)); 9 } 10 return arr; 11 } 12 13 var results = count(); 14 var f1 = results[0]; 15 var f2 = results[1]; 16 var f3 = results[2]; 17 18 f1(); // 1 19 f2(); // 4 20 f3(); // 9
注意第13行并没有去调用内部函数,因为count( )返回的只是arr,这个对象是一个函数数组,里面有三个函数,只有当调用这个内部中的函数对象中的函数时才会执行n*n的操作。
注意第8行这里用了一个“创建一个匿名函数并立刻执行”的语法:
(function (x) {
return x * x;
})(3); // 9
理论上讲,创建一个匿名函数并立刻执行可以这么写:
function (x) { return x * x } (3);
但是由于JavaScript语法解析的问题,会报SyntaxError错误,因此需要用括号把整个函数定义括起来:
(function (x) { return x * x }) (3);
通常,一个立即执行的匿名函数可以把函数体拆开,一般这么写:
(function (x) {
return x * x;
})(3);
javascripts闭包的理解
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。