javascript陷阱

2013-01-23 20:17:18

$(document).ready(function() {
	for (var i = 0; i & lt; 10; i++) {
		setTimeout(console.log(i), 1000)
	}
});

输出结果
0
1
2
3
4
5
6
7
8
9
$(document).ready(function() {
	for (var i = 0; i & lt; 10; i++) {
		setTimeout(function() {
			console.log(i);
		}, 1000);
	}
});
10 10 //输出十次10
第一个显示如我们所料,而第二是因为,我们在for循环中定义的变量i,在for循环结束后还没有走出它的作用域,也就是说for循环之后,i依然可以访问,值等于最后一次循环后的值。
|