做网站用的pm是啥,自己做的网站怎么上线,涡阳网站建设哪家好,昆明网站开发正规培训要成为高级 JavaScript 程序员#xff0c;就必须理解闭包。闭包有时你非用她不可#xff0c; 所有理解闭包还是必要的。笔者通过例子来说一下“闭包” 1.定义一个函数的代理#xff1a; functiondelegate (fn, scope, args, append) { returnfunction/*匿名函数1*/(… 要成为高级 JavaScript 程序员就必须理解闭包。闭包有时你非用她不可 所有理解闭包还是必要的。笔者通过例子来说一下“闭包” 1.定义一个函数的代理 function delegate (fn, scope, args, append) { return function /*匿名函数1*/ () { var callargs Array.proptotype.slice(arguments, 0); if (append) callargs callargs .concat(args); fn.apply(scope || window, callargs ); } } 在上面这段代码中就用到了闭包即delegate方法里return 后面的函数匿名函数1就是闭包 这个例子是个方法fn创建一个代理 意思就是在执行方法fn的时候给他添加一些额外的参数或者改变fn执行的作用域比如 function test_delegate() { var fn delegate(test, window, [11122, aaaa], true); //给方法test 创建一个代理 并传人参数[11122, aaaa] fn(111); //调用test的代理}function test() { //输出test的所有参数 var arr []; Easy.each(arguments, function (item) { arr.push(item); }); alert(arr.join(\n)); } 其中的test_delegate里调用的 fn(111); 参数111, 就是在delegate方法里的匿名函数1的arguments 在这个例子里test执行后会输出 111 11122aaaa delegate方法出自Easy.js。下面粘贴一个ECMA 262 里对闭包的介绍ECMA 262 Closure英文 为之漫笔 翻译的ECMA 262 Closure 转载于:https://www.cnblogs.com/Easyjs/archive/2011/02/27/1966218.html