欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

js 數(shù)組的for循環(huán)到底應該怎么寫?

 更新時間:2010年05月31日 23:26:05   作者:  
說實話,我是個比較喜歡懷疑權威的人,但是在有些權威的問題一直在我面前閃,閃啊閃,我就開始不懷疑他們了,因為有10000個人說這個東西是對的,我就會覺得它的確是對的吧。
然后來看看今天我開始懷疑哪個權威哦家伙了。。。

自從開始學編程,自從接觸到數(shù)組這個東西,我就一直在不同的地點和不同的時間不斷看到有人提醒:在用for遍歷數(shù)組的時候一定要用 for(var i=0,n=arr2.length;i<n;i++)的方式哦,而不要用for(var i=0;i>arr.length;i++)的方式哦,因為用腦子想想也知道,第二種方法的第二部分會一直去計算數(shù)組的length,所以自然效率比較低。

哦?我們這里不說其他程序語言,而只討論js,因為不同的語言,實現(xiàn)可能不同,其他語言是什么情況還要靠大家去探索嘍。 其實上面說到的所謂的“動腦子想想就知道”也許只是因為大家只是用腦子想了想,而不是仔細想了想或者親自去試了試。所以現(xiàn)在我們仔細想想,第一種寫法真的會比第二種寫法快么?arr.length會耗費很多cpu么?不會啊,為什么要耗費cpu呢?arr.length并不是調用了一個方法,而只是讀取了一下數(shù)組的length屬性啊,你認為讀取原生屬性和讀取定義的變量,哪個會快呢? 我認為讀取length會更快,所以我寫了個測試來測試自己的想法: 我用了一個我自己的小測試框架,
復制代碼 代碼如下:

var arr=[],arr2=[],i=0
while(i<100000){
arr.push(i)
arr2.push(i)
i++
}
M.TA.begin("0000");
for(var i=0;i<arr.length;i++){
arr[i]=arr[i]*arr[i]*arr[i]
}
M.TA.end("0000","for(var i=0;i<arr.length;i++)")
M.TA.begin("0001");
for(var i=0,n=arr2.length;i<n;i++){
arr2[i]=arr2[i]*arr2[i]*arr2[i]
}
M.TA.end("0001"," for(var i=0,n=arr2.length;i<n;i++)")
M.TA.showResult()

當然,這段代碼是很變態(tài)的,占用了300多兆的內存。 結果如下:
chrome

firefox

(在做過N種性能測試后發(fā)現(xiàn)firefox在基礎運算上的效率比chrome高很多,只是涉及到渲染的就慢很多了)
ie8

(減少了N個數(shù)量級之后的記過,上述腳本在ie里無法運行)
總結:?
其實做這個測試不是為了強調for(var i=0;i<arr.length;i++)的寫法快多少,因為測試也是有些許誤差的,只是為了說明這種寫法并不會慢到哪里去,而且這種寫法有一定的靈活性,書寫也簡單,代碼量又少,那我們?yōu)槭裁床挥盟兀?如果是第一種寫法,在循環(huán)的時候數(shù)組長度發(fā)生變化呢?這種情況就處理不了了吧

其實我還是尊敬權威的,所以寫到這里的時候我心里仍然提心吊膽,難道是我哪里搞錯了么?如果是,大家就當一笑而過吧,如果不是,那我總算寫了篇人模狗樣的博文了。。。
轉載注明:
http://www.html-js.com

相關文章

  • 獲取Javscript執(zhí)行函數(shù)名稱的方法

    獲取Javscript執(zhí)行函數(shù)名稱的方法

    獲取Javscript執(zhí)行函數(shù)名稱的方法...
    2006-12-12
  • 使用CSS+JavaScript或純js實現(xiàn)半透明遮罩效果的實例分享

    使用CSS+JavaScript或純js實現(xiàn)半透明遮罩效果的實例分享

    這篇文章主要介紹了使用CSS+JavaScript或純js實現(xiàn)半透明遮罩效果的實例分享,編寫半透明遮罩層時要注意定位問題、不要滿屏遮罩,需要的朋友可以參考下
    2016-05-05
  • layui radio性別單選框賦值方法

    layui radio性別單選框賦值方法

    今天小編就為大家分享一篇layui radio性別單選框賦值方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • js類型轉換與引用類型詳解(Boolean_Number_String)

    js類型轉換與引用類型詳解(Boolean_Number_String)

    本篇文章主要是對js中的類型轉換與引用類型(Boolean_Number_String)進行了詳細的介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-03-03
  • 原生JS實現(xiàn)拖拽效果

    原生JS實現(xiàn)拖拽效果

    這篇文章主要為大家詳細介紹了原生JS實現(xiàn)拖拽效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • JS如何把字符串轉換成json

    JS如何把字符串轉換成json

    這篇文章主要介紹了JS如何把字符串轉換成json,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • Promise 鏈式調用原理精簡示例

    Promise 鏈式調用原理精簡示例

    這篇文章主要為大家介紹了Promise 鏈式調用原理精簡示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • JS常用倒計時代碼實例總結

    JS常用倒計時代碼實例總結

    這篇文章主要介紹了JS常用倒計時代碼,結合實例形式總結分析了JS常用的倒計時功能實現(xiàn)方法,具有一定參考借鑒價值,需要的朋友可以參考下
    2017-02-02
  • 微信小程序實戰(zhàn)之打卡時鐘的繪制

    微信小程序實戰(zhàn)之打卡時鐘的繪制

    這篇文章主要介紹了如何利用微信小程序制作一個打卡時鐘,分為工作和休息兩種狀態(tài),用戶可以設置相應的時間,所有的時鐘記錄都會被保存下來,感興趣的可以了解一下
    2022-04-04
  • 微信小程序實現(xiàn)錄音功能

    微信小程序實現(xiàn)錄音功能

    這篇文章主要為大家詳細介紹了微信小程序實現(xiàn)錄音功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11

最新評論