<script type="text/javascript">
var seq=[2,3,4,5];
for(var i in seq){
var name = 'phil' + seq[i];
window.setTimeout(function(){
console.log(name);
},i*1000)
}
</script>
这段代码的次序是先初始化,给seq赋值,给name赋值,值得注意的是for不是一个函数,而是一种结构,所以会先执行4次var name 的赋值,然后再执行四次windows的定时操作,所以最后得到的是phil5.
此外,最后i的值是3.
setTimeout的意思是延迟执行,而非循环,虽然利用for结构变成了4个延迟命令。
错误博客地址http://www.cnblogs.com/philzhou/p/3282216.html,这里面的结果是错误的。
<script type="text/javascript">
var seq = [1, 2, 3, 4];
for(var i in seq) {
var name = 'phi' + i;
var obj = {};
obj.name = name;
obj.setTimeout = function() {
var local = this;
window.setTimeout(function() {
console.log(local.name+"hello");
},i*1000);
}
obj.setTimeout();
}
</script>
上文才是正确的隔一秒输出一个