for i in range(3): print(i) print(i,"---") #Python的问题就在于,当循环结束以后,循环体中的临时变量i不会销毁,而是继续存在于执行环境中。
flist = [] for i in range(3): def foo(x): print(x + i) flist.append(foo) for f in flist: f(1) #原因在于foo()=x+i x=1,此时函数在局部变量中找i,没有,在全局变量中找,for循环将i变成了2,所以x+2=3
JavaScript中
<script>
for(var i=0;i<3;i++){
console.log(i)
}
console.log(i,"---") #3
console.log(i,"---") #3
</script>