先看一段代码
var increment = function(funcArray){
var i = 0;
for(; i < funcArray.length; i+=1){
funcArray[i] = function(){
alert(i);
};
}
};
var func1 = null, func2 = null;
var funcArray = [func1, func2];
increment(funcArray);
for(i = 0; i < funcArray.length; i += 1){
funcArray[i]();
}
两个弹出的都是2.alert(i)的i就是那唯一的i,这里funcArray的两个元素的确有各自的上下文,但是i是共享的。