关于变量和函数的初始化和执行次序

<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>
上文才是正确的隔一秒输出一个

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值