一个很有趣的算法
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]);}
先看結(jié)果
?
哈哈是不是很有趣。
竟然自動排序了。
其實把原理很簡單
首先setTimeout有兩種形式
setTimeout(code,interval) setTimeout(func,interval,args)所以第二個arr[i]就會作為參數(shù)傳進(jìn)去。
明白了吧。
然后就是setTimeout異步運行的機(jī)制。其實當(dāng)?shù)谝淮蝐osole.log()時候
外面的for以后走完了,你不信么。
來來上圖
我會亂說么。呵呵呵呵
看吧第一次debugger時候就已經(jīng)是10了
然而時間肯定是從小到大運行的,所以就從小到大輸出了。
話說真是好好玩的東西。:)
轉(zhuǎn)載于:https://www.cnblogs.com/web-alibaba/p/4842968.html
總結(jié)
- 上一篇: 怎么辨别iPhone6真假?iPhone
- 下一篇: 沉默不语的说说 一个人沉默不语的句子24