闭包
下面这个方法能输入0 1 2 ... 9吗?显然是不可以的,输出结果是10个10。
function test() {var arr = [];for(var i = 0; i < 10; i++){arr[i] = function() {console.log(i);}}return arr;}var arrs = test();for(var j = 0; j < arrs.length; j++) {arrs[j]();}
利用立即执行函数把0到9输出。
function test() {var arr = [];for(var i = 0; i < 10; i++){(function(){console.log(i)}(i))}}
ECMAScript/JS 基础知识讲解
原文地址:http://www.cnblogs.com/yaochc/p/7663515.html