一个很有趣的算法

        var arr = [ 3000,0,1000,'aa', 2000, 4000, 8000, 6000, 7000, 5000];

	for (i = 0; i < arr.length; i++) {
		setTimeout(function(num) {
			console.log(num);
			debugger;
		}, arr[i], arr[i]);
	}

  先看结果

 

哈哈是不是很有趣。

竟然自动排序了。

其实把原理很简单

首先setTimeout有两种形式

setTimeout(code,interval)
setTimeout(func,interval,args)

所以第二个arr[i]就会作为参数传进去。

明白了吧。

然后就是setTimeout异步运行的机制。其实当第一次cosole.log()时候

外面的for以后走完了,你不信么。

来来上图

我会乱说么。呵呵呵呵

看吧第一次debugger时候就已经是10了

然而时间肯定是从小到大运行的,所以就从小到大输出了。

话说真是好好玩的东西。:)

转载于:https://www.cnblogs.com/web-alibaba/p/4842968.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值