这是非常重复的“如何在闭包中使用循环变量”问题。
规范的解决方案是调用一个函数,该函数返回绑定到循环变量当前值的函数:
var strings = [ "hello", "world" ];var delay = 1000;for(var i=0;i<strings.length;i++) { setTimeout( (function(s) { return function() { alert(s); } })(strings[i]), delay); delay += 1000;}外部定义
function(s) { ... }创建一个新作用域,该作用域s绑定到所提供参数的当前值,即 内部
作用域
strings[i]可用的范围。 __



