for ( var i = 0; i < 5; i++ ) {
setTimeout(function() {
alert( i );
}, i * 100 );
}
我从互联网上拿了上面的例子来理解闭包。但我无法理解为什么它会提醒值5次5次。而不是警告1,2 3,4,5 但是可以采用以下方式。有人可以解释原因。我是JavaScript的新手,所以请提供一些精心解答的答案。
var createFunction = function( i ) {
return function() {
alert( i );
};
};
for ( var i = 0; i < 5; i++ ) {
setTimeout( createFunction( i ), i * 100 );
}