javascript for循環(huán)設(shè)法提高性能
更新時(shí)間:2010年02月24日 21:37:00 作者:
讓你的for循環(huán)提升性能的寫(xiě)法,需要的朋友可以參考下。
一般在javascript里對(duì)數(shù)組進(jìn)行遍歷一般是使用for循環(huán),像下面一樣
var arr = [];
for(var i=0; i<arr.length; i++){
//loop
}
這種代碼最大的問(wèn)題,就在于每次循環(huán)時(shí)都要通過(guò) .操作符獲取 .length,增加了開(kāi)銷。那么我們可以這樣改進(jìn)。
var arr = [];
for(var i=0, n=arr.length; i<n; i++){
//loop
}
這樣子,先把 arr.length暫存到 n 變量中去。只在開(kāi)始時(shí)獲取一次。
但是這樣就沒(méi)問(wèn)題了嗎?貌似多定義了個(gè)無(wú)意義的變量 n 。好那繼續(xù)改進(jìn)
var arr = [];
for(var i=arr.length-1; i > -1; i--){
//loop
}
好這樣子,我們把這個(gè)循環(huán)順序倒過(guò)來(lái),就把那個(gè)n去掉了,而使用了一個(gè)常量-1。
如果應(yīng)用場(chǎng)景,允許不使用 for 循環(huán)的話。我們可在使用 while代替
善于使用這兩種循環(huán)語(yǔ)句,以提高javascript的效率。
var arr = [];
var i=arr.length-1;
while(i--){
//loop arr[i]
}
或者
var arr = [];
var i=arr.length-1;
do {
// loop arr[i]
}while(--i)
這樣代碼更簡(jiǎn)潔,效率更好,特別是如果允許先執(zhí)行一次循環(huán)體的情況下,使用do while效果很明顯。
唯一的問(wèn)題是把 i 移到循環(huán)外了。
復(fù)制代碼 代碼如下:
var arr = [];
for(var i=0; i<arr.length; i++){
//loop
}
這種代碼最大的問(wèn)題,就在于每次循環(huán)時(shí)都要通過(guò) .操作符獲取 .length,增加了開(kāi)銷。那么我們可以這樣改進(jìn)。
復(fù)制代碼 代碼如下:
var arr = [];
for(var i=0, n=arr.length; i<n; i++){
//loop
}
這樣子,先把 arr.length暫存到 n 變量中去。只在開(kāi)始時(shí)獲取一次。
但是這樣就沒(méi)問(wèn)題了嗎?貌似多定義了個(gè)無(wú)意義的變量 n 。好那繼續(xù)改進(jìn)
復(fù)制代碼 代碼如下:
var arr = [];
for(var i=arr.length-1; i > -1; i--){
//loop
}
好這樣子,我們把這個(gè)循環(huán)順序倒過(guò)來(lái),就把那個(gè)n去掉了,而使用了一個(gè)常量-1。
如果應(yīng)用場(chǎng)景,允許不使用 for 循環(huán)的話。我們可在使用 while代替
善于使用這兩種循環(huán)語(yǔ)句,以提高javascript的效率。
復(fù)制代碼 代碼如下:
var arr = [];
var i=arr.length-1;
while(i--){
//loop arr[i]
}
或者
復(fù)制代碼 代碼如下:
var arr = [];
var i=arr.length-1;
do {
// loop arr[i]
}while(--i)
這樣代碼更簡(jiǎn)潔,效率更好,特別是如果允許先執(zhí)行一次循環(huán)體的情況下,使用do while效果很明顯。
唯一的問(wèn)題是把 i 移到循環(huán)外了。
您可能感興趣的文章:
- jQuery的Each比JS原生for循環(huán)性能慢很多的原因
- JS常用的幾種數(shù)組遍歷方式以及性能分析對(duì)比實(shí)例詳解
- JavaScript遍歷數(shù)組的三種方法map、forEach與filter實(shí)例詳解
- JS數(shù)組的遍歷方式for循環(huán)與for...in
- js中的for如何實(shí)現(xiàn)foreach中的遍歷
- JavaScript中的數(shù)組遍歷forEach()與map()方法以及兼容寫(xiě)法介紹
- JavaScript forEach()遍歷函數(shù)使用及介紹
- javascript forEach通用循環(huán)遍歷方法
- JS 使用for循環(huán)遍歷子節(jié)點(diǎn)查找元素
- JavaScript中for-in遍歷方式示例介紹
- javascript for循環(huán)性能測(cè)試示例
相關(guān)文章
JavaScript第一篇之實(shí)現(xiàn)按鈕全選、功能
這篇文章主要介紹了JavaScript第一篇之實(shí)現(xiàn)按鈕全選、功能的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-08-08
利用js實(shí)現(xiàn)Vue2.0中數(shù)據(jù)的雙向綁定功能
vue數(shù)據(jù)雙向綁定是通過(guò)數(shù)據(jù)劫持結(jié)合發(fā)布者-訂閱者模式的方式來(lái)實(shí)現(xiàn)的,下面這篇文章主要給大家介紹了關(guān)于如何利用js實(shí)現(xiàn)Vue2.0中數(shù)據(jù)的雙向綁定功能的相關(guān)資料,需要的朋友可以參考下2021-07-07
JS實(shí)現(xiàn)1000以內(nèi)被3或5整除的數(shù)字之和
今天在技術(shù)群里看到一道這樣的提:求1000以內(nèi)被3或5整除的數(shù)字之和。小編把我的解決辦法分享到腳本之家平臺(tái),供大家參考2016-02-02
js中將具有數(shù)字屬性名的對(duì)象轉(zhuǎn)換為數(shù)組
js中將具有數(shù)字屬性名的對(duì)象轉(zhuǎn)換為數(shù)組,雖然不太常用,但我們的確可以給對(duì)象添加以數(shù)字為屬性名的屬性2011-03-03
一個(gè)報(bào)數(shù)游戲js版(約瑟夫環(huán)問(wèn)題)
隨便給一個(gè)數(shù) 比如100,那么從1到100圍成一個(gè)圓圈,然后就類似123123報(bào)數(shù)一樣逢3就舍掉,一直這樣輪詢 那么最后剩下來(lái)的那個(gè)數(shù)是多少?2010-08-08
3分鐘教你用JavaScript實(shí)現(xiàn)電子簽名效果
電子簽名已經(jīng)成為現(xiàn)代商業(yè)中不可或缺的一部分,它可以提高業(yè)務(wù)流程的效率和安全性。本文將介紹如何使用HTML5的canvas元素和JavaScript在前端實(shí)現(xiàn)電子簽名,需要的可以參考一下2023-04-04

