亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

JavaScript 性能提升之路

2024-05-06 16:49:46
字體:
來源:轉載
供稿:網友

在平時工作做項目的過程中我們有時候會遇到頁面加載很久才加載出來的情況,這樣嚴重影響了用戶的體驗效果。雖然說有時候可能是因為網絡問題,但有些時候確實是前端代碼沒有足夠優化導致的。所以通過查閱相關資料并實踐后,總結出如下知識點來提升性能。有什么寫得不對的地方還希望各路大神指出并加以指點。

1、數據訪問

1、將所有script標簽放在盡可能接近body標簽底部的位置,盡可能減少對整個頁面下載的影響。

JavaScript,性能提升

2、盡量少用全局變量。因為變量在作用域鏈中的位置越深,訪問的時間就越長。局部變量位于作用域鏈中的第一個對象中,全局變量總是位于作用域鏈的最后一環,所以全局變量總是最慢的。

3、避免全局查詢,如果一定要用到全局變量時,并且需要在某個函數中多次用到該全局變量時,可以定義一個局部變量指向全局變量,來縮短在作用域鏈中的查詢深度。

 function addTotrackData(){  	var allChildrenNode=getAllChildrenDepartmentNodes();  	for (var i = 0; i < allChildrenNode.length; i++) {      for (var j=0,len=track.length;j<len;j++) {        if (trackNode[j]["userId"] == allChildrenNode[i]) {          trackNode[j]["isOnMap"] = true;        }      }    }  }

上面代碼可以改寫為如下所示

  function addTotrackData(){  	var allChildrenNode=getAllChildrenDepartmentNodes();  	var track=trackNode;  	for (var i = 0; i < allChildrenNode.length; i++) {      for (var j=0,len=track.length;j<len;j++) {        if (track[j]["userId"] == allChildrenNode[i]) {          track[j]["isOnMap"] = true;        }      }    }  }

4、將集合的length屬性用一個局部變量來保存,在迭代中使用該變量。

 for (var j=0,len=track.length;j<len;j++) 

5、避免使用with表達式,因為它增加作用域鏈的長度。而且應當小心的對待try-catch的catch子句,它具有同樣效果。

6、一個屬性或方法在原型鏈中的位置越深,它的訪問速度就越慢。

7、聲明變量時,多個變量合并聲明,可以減少內存消耗。

 var a;  var b;  var c;  //推薦  var a,b,c

2、Dom操作

Dom(文檔對象模型)是一個獨立于語言的,使用xml和html文檔操作的應用程序接口。在瀏覽器中的接口卻是以javascript來實現的。Dom和javascript看成兩座島,兩者之間通過一座收費的橋連接。一般建議盡量留在javascript島上。

1、用innerHTML代替DOM操作,減少DOM操作次數,優化javascript性能。

 //dom方式  var str=""  var dom=document.getElementById("test");  var start1=new Date();  for(var j=0;j<100000;j++){  	var div=document.createElement("div");  	div.innerText="test";  	dom.append(div);					  }  var end1=new Date();  console.log("dom方式:"+(end1-start1));//dom方式:356    //inerHTML方式  var content="";  var start=new Date();  for(var i=0;i<10000;i++){    content=content+"<div>test</div>";  }  document.getElementById("test").innerHTML=content;  var end=new Date();  console.log("innerHTML方式:"+(end-start));//innerHTML方式:35

2、如果統一個Dom元素或集合被訪問一次以上,最好使用一個局部變量來緩存此Dom成員,在循環中使用局部變量緩存集合引用和集合元素會提升速度。

3、遍歷children比childNodes更快。children不區分(包括)注釋節點和空文本節點,所以快一些。

4、使用element.cloneNode(bool)復制節點,bool為false表示淺復制,只復制當前節點,bool為true時,表示深復制,還會復制其子節點。這種方式比document.createElement()速度要快一些。

5、使用document.querySelector和document.querySelectorAll("div.warning,div.notice")來快速查找。因為它們返回一個NodeList——由符合條件的節點構成的類數組對象,而不是HTML集合(總是表現出存在性),避免了它所固有的性能問題(以及存在的邏輯問題)。querySelectorAll("div.warning,div.notice")還可以進行聯合查詢。

6、修改樣式時,可以使用div.style.cssText來一起修改樣式,或者使用類來修改(便于維護)。

var el = document.getElementById('mydiv');   //修改3次Dom  el.style.borderLeft = '1px';  el.style.borderRight = '2px';  el.style.padding = '5px';  //推薦只需要修改1次Dom  el.style.cssText = 'border-left: 1px; border-right: 2px; padding: 5px;' 

7、盡量避免寫在HTML標簽中寫Style屬性,使用外聯樣式便于維護和修改。

8、避免圖片和iFrame等的空Src??誗rc會重新加載當前頁面,影響速度和效率。

9、采用事件委托。元素連接事件句柄會影響頁面性能,采用委托利用事件冒泡的性能減少元素連接事件。(事件掛接過程都是發生在onload或DOMContentReady)事件中。

3、循環

1、for-in是四種循環方法中速度最慢的一種,一般用于循環對象(需要查找自身屬性還是原型屬性)。不建議循環數組。除非要迭代遍歷一個屬性未知的對象,否則一般不用for-in。

2、改變循環條件的順序來提高循環性能。

 //推薦  for(var i=items.length;i--;){    //todo  }  //不推薦  for(var i=0,len=items.length;i<len;i++){    //todo  }  

3、通過減少循環體來優化性能。

以上所述是小編給大家介紹的JavaScript性能提升詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美www| 国产视频久久久久久久| 欧美激情视频一区| 国产亚洲美女精品久久久| 91久久精品久久国产性色也91| 中文字幕亚洲图片| 国产欧美日韩视频| 精品成人国产在线观看男人呻吟| 精品国产依人香蕉在线精品| 精品国产一区二区三区久久久狼| 日本精品性网站在线观看| www.日韩免费| 插插插亚洲综合网| 欧美成人午夜激情| 精品国产福利视频| 欧美色欧美亚洲高清在线视频| 亚洲一区二区久久久久久久| 亚洲国模精品私拍| 国产va免费精品高清在线| 欧美一级大胆视频| 亚洲欧美另类中文字幕| 欧洲永久精品大片ww免费漫画| 亚洲精品女av网站| 琪琪亚洲精品午夜在线| 97在线日本国产| 欧美性猛交xxxx偷拍洗澡| 久久亚洲电影天堂| 国产亚洲欧美日韩美女| 搡老女人一区二区三区视频tv| 久久精品亚洲94久久精品| 亚洲精品一区久久久久久| 国产+成+人+亚洲欧洲| 亚洲欧美综合区自拍另类| 精品久久久久国产| 国产亚洲一级高清| 中文字幕欧美亚洲| 亚洲成人av资源网| 性色av一区二区三区| 97久久国产精品| 精品久久久一区二区| 国产大片精品免费永久看nba| 久久久久免费精品国产| 2018日韩中文字幕| 国产日韩欧美日韩| 国产成人精品视| 在线观看国产精品91| 中日韩午夜理伦电影免费| 午夜精品久久久久久久99热浪潮| 亚洲人成网站色ww在线| 国产成人一区二| 精品福利在线观看| 日韩中文字幕在线免费观看| 国产成人久久精品| 欧美综合第一页| www.精品av.com| 欧美午夜性色大片在线观看| 国产成人高潮免费观看精品| 欧美日韩国产成人在线观看| 日韩精品视频在线播放| 91色精品视频在线| 国产精品99久久久久久www| 国产999精品视频| 亚洲精品日韩欧美| 国产精品久久久久久久久粉嫩av| 国产精品视频自在线| 国产精品自产拍高潮在线观看| 国产99久久精品一区二区| 久久男人的天堂| 97视频在线观看视频免费视频| 大荫蒂欧美视频另类xxxx| 国产91久久婷婷一区二区| 91精品国产高清自在线| 性金发美女69hd大尺寸| 亚洲欧美精品中文字幕在线| 国产精品免费视频久久久| 国产精品视频一区二区高潮| 日韩精品视频在线观看网址| 91国产精品视频在线| 深夜精品寂寞黄网站在线观看| 久久亚洲成人精品| 欧美激情一区二区三区在线视频观看| 午夜精品久久久久久久久久久久久| 亚洲va欧美va在线观看| 国产午夜精品美女视频明星a级| 福利微拍一区二区| 中文字幕久热精品视频在线| 日韩av中文字幕在线免费观看| 亚洲天堂av高清| 国产精品r级在线| 国产精品jvid在线观看蜜臀| 国产成人精品免高潮费视频| 茄子视频成人在线| 久久久女人电视剧免费播放下载| 97香蕉久久超级碰碰高清版| 精品久久久久久久久久久久久久| 97色在线播放视频| 欧美国产日产韩国视频| 国产精品第10页| 精品日韩中文字幕| 国产日韩亚洲欧美| 欧美高清在线观看| 久久久久北条麻妃免费看| 成人羞羞国产免费| 国产精品美女无圣光视频| 精品国产欧美一区二区五十路| 精品视频久久久久久| 国产精品青草久久久久福利99| 97在线观看免费高清| 欧美大片网站在线观看| 亚洲免费av电影| 国产精品精品视频一区二区三区| 在线观看亚洲视频| 国产精品美女在线观看| 91精品综合久久久久久五月天| 久久久久久久一区二区| 日韩中文字幕国产精品| 国产精品99久久久久久www| 精品国产网站地址| 57pao成人永久免费视频| 日本亚洲欧洲色| 欧美性生交xxxxxdddd| 亚洲深夜福利视频| 中文字幕日本精品| 日本久久中文字幕| 国产精品6699| 中文字幕日韩免费视频| 久久精品精品电影网| 国产婷婷97碰碰久久人人蜜臀| 亚洲国产精品资源| 欧美另类99xxxxx| 亚洲欧美日韩高清| 亚洲欧洲日产国产网站| 欧美一级片免费在线| 欧美三级欧美成人高清www| 日韩成人网免费视频| 一区二区三区精品99久久| 亚洲精品在线91| 国产亚洲在线播放| 日韩中文字幕在线免费观看| 日韩电影中文字幕在线| 91tv亚洲精品香蕉国产一区7ujn| 色999日韩欧美国产| 欧美黑人国产人伦爽爽爽| 国产噜噜噜噜噜久久久久久久久| 国内精品视频久久| 国产精品xxxxx| 亚洲аv电影天堂网| 亚洲第一免费播放区| 亚洲天堂免费视频| 久久久99久久精品女同性| 国产午夜精品久久久| 日本精品中文字幕| 97国产真实伦对白精彩视频8| 亚洲va男人天堂| 亚洲最大成人免费视频| 久久伊人免费视频| 精品国产一区二区三区久久狼5月| 日本欧美一级片| 日韩电影免费在线观看中文字幕| 国产日韩av在线| 91夜夜揉人人捏人人添红杏| 久久精品免费播放| 日韩av一区二区在线| 国产精品69久久久久|