这次我发现了个奇怪的问题,高程经典的闭包陷阱,竟然是把一个未执行的函数赋值给了一个数组项,当年的我太年轻,竟然没看出来这一层。
百度了下,这篇文章和我的理解不谋而合。
http://www.cnblogs.com/qieguo/p/5457040.html
如何解决这个问题呢?
书上是这样写的,当初的我怎么也想不明白为什么非要再返回一个函数,直接立即执行不就好了么,直接立即执行完全就违背了题意好么?result里存的就是一堆数字了,而非函数。
var result = [];
for(var i = 0; i < 9; i++) {
result[i] = (function(num){
return function() {
return num;
}
})(i);
}