中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

JavaScript提高網站性能優化的建議(二)
來源:易賢網 閱讀:1013 次 日期:2016-07-29 14:19:00
溫馨提示:易賢網小編為您整理了“JavaScript提高網站性能優化的建議(二)”,方便廣大網友查閱!

這篇文章主要介紹了JavaScript提高網站性能優化的建議(二)的相關資料,需要的朋友可以參考下

在javascript關于提高網站性能的幾點建議(一)中,從HTTP請求到頁面渲染幾個方面對提高網站性能提出了幾點建議,本文是學習Steve Sounders的另外一本書《高性能網站建設進階指南》之后,從JavaScript性能的角度進行總結概括,諸君共勉。

JavaScript性能是實現高性能Web應用程序的關鍵

——Steve Sounders

1 利用js作用域鏈

作用域鏈(scope chain)

當執行一段JavaScript代碼(全局代碼或函數)時,JavaScript引擎會創建為其創建一個作用域又稱為執行上下文(Execution Context),在頁面加載后會首先創建一個全局的作用域,然后每執行一個函數,會建立一個對應的作用域,從而形成了一條作用域鏈。每個作用域都有一條對應的作用域鏈,鏈頭是全局作用域,鏈尾是當前函數作用域。

作用域鏈的作用是用于解析標識符,當函數被創建時(不是執行),會將this、arguments、命名參數和該函數中的所有局部變量添加到該當前作用域中,當JavaScript需要查找變量X的時候(這個過程稱為變量解析),它首先會從作用域鏈中的鏈尾也就是當前作用域進行查找是否有X屬性,如果沒有找到就順著作用域鏈繼續查找,直到查找到鏈頭,也就是全局作用域鏈,仍未找到該變量的話,就認為這段代碼的作用域鏈上不存在x變量,并拋出一個引用錯誤(ReferenceError)的異常。

管理好作用域鏈的深度,是一種只要少量工作就能提高性能的簡易方法,我們應避免因無意中增長了作用域鏈而導致執行速度變得緩慢。

使用局部變量(盡量縮短作用域鏈)

如果理解了作用域鏈的概念,那么我們應該清楚JavaScript引擎對變量的解析時間跟作用域鏈的深度有關,顯而易見,局部變量由于處于鏈尾,存取速度是最快的,因此,一個好的經驗是:任何非局部變量使用超過一次時,請使用局部變量將其存儲下來,例如:

function changeDiv(){

document.getELementById('myDiv').className = 'changed';

document.getELementById('myDiv').style.height = 150;

}

這里myDiv這個dom元素被引用了兩次,為了更快的引用,我們應該用一個局部變量將其存儲下來,這樣做的好處不僅縮短了作用域鏈,而且避免了DOM元素的重復查詢:

function changeDiv(){

var myDivStyle = document.getElementById('myDiv').style;

myDiv.className = 300;

myDiv.style.height = 150;

}

避免使用with(不要增長作用域鏈)

一般在代碼執行過程中,函數的作用域鏈是固定的,然而with可以臨時增長函數的作用域鏈。with用于將對象屬性作為局部變量來顯示,使其便于訪問,例如:

var user = {

name:'vicfeel',

age:'23'

};

function showUser(){

var local = 0;

with(user){

console.log("姓名" + name);

console.log("年齡" + age);

console.log(local);

}

}

showUser();

這個例子中,通過with在showUser作用域鏈的鏈尾中又增加了一個臨時作用域,該作用域存儲著user對象的所有屬性,也就是增長了with這段代碼的作用域鏈,在這段代碼中,局部變量像local從鏈尾的第一個對象變成了第二個,自然減慢了標識符的存取。直到with語句結束,作用域鏈恢復增長。正因為with的這個缺陷,我們應盡量避免使用with關鍵字。

2 更合理的流控制

JavaScript與其它編程語言一樣,擁有一些流控制語句(循環、條件等),在每個環節上使用恰當的語句能極大的提高腳本的運行速度。

快速條件判斷

提到條件判斷,首先要避免的一種使用方式:

if(value == 0){

return result0;

}

else if(value == 1){

return result1;

}

else if(value == 2){

return result2;

}

else if(value == 3){

return result3;

}

else if(value == 4){

return result4;

}

else if(value == 5){

return result5;

}

else if(value == 6){

return result6;

}

else{

return result7;

}

這種使用if進行條件判斷的方式存在的主要問題是層次太深,當我要value = 7時,消耗時間要比value = 0長很多,大大損耗了性能,同時可讀性很差。

一種更好的方式,利用switch進行判斷。

swithc(value){

case 0:

return result0;

case 1:

return result1;

case 2:

return result2;

case 3:

return result3;

case 4:

return result4;

case 5:

return result5;

case 6:

return result6;

default:

return result7;

}

這樣不僅提高了可讀性,查詢時間也要比if更快。但是如果只有一兩個條件時,if是比switch更快的

在JavaScript中,條件查詢還有另外一種方式,之前的例子是根據值返回不同的值,剛好可以利用數組實現hash表的映射查詢。

//定義數組

var results = [result0,result1,result2,result3,result4,result5,result6,result7];

//查詢結果

return results[value];

這種數組的方式,在查詢范圍很大時才更加有效,因為它不必檢測上下邊界,只需要填入索引值就可以查詢了。它的局限性在于條件對應的是單一值,而不是一系列操作。因此要綜合實際情況,選擇合適的條件判斷方式,發揮性能最大化。

快速循環

JavaScript中存在4種循環方式for循環、do-while循環、while循環和for-in循環。下面是一個很常用的循環使用方式:

var values = [1,2,3,4,5];

for(var i = 0;i < values.length;i++){

process(values[i]);

}

我們可以看到,這段代碼最明顯可以優化的地方在于values.length,每次循環i都要和values的長度進行比較,而查詢屬性要比局部變量更耗時,如果循環次數越大,這種耗時就越明顯,因此可以這樣優化:

var values = [1,2,3,4,5];

var length = values.length;//局部變量存儲數組長度

for(var i = 0;i < length;i++){

process(values[i]);

}

這段代碼還可以繼續優化,將循環變量遞減到0,而不是遞加到總長度。

var values = [1,2,3,4,5];

var length = values.length;

for(var i = length;i--;){ //遞減到0

process(values[i]);

}

這里將循環結束改造為與0比較,所以每個循環的速度更快了,根據循環的復雜度不同,這種簡單改變可以比原來節約大概50%的時間。

更多信息請查看網絡編程
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
国产精品久久久久久超碰| 日韩视频亚洲视频| 国产人久久人人人人爽| 亚洲欧美日韩成人| 国产日韩欧美在线视频观看| 午夜久久一区| 国产一区二区三区高清在线观看| 久久久久久久波多野高潮日日 | 亚洲视频图片小说| 国产精品久久久久久久久免费 | 午夜精品成人在线视频| 国产精品久久久久久久久久久久久久| 午夜精品久久久久久久99水蜜桃| 国产性猛交xxxx免费看久久| 美女黄色成人网| 中文在线资源观看网站视频免费不卡| 国产麻豆91精品| 欧美成人亚洲成人| 欧美亚洲在线| 亚洲最新中文字幕| 国产在线视频欧美| 欧美日韩精品一二三区| 久久九九久久九九| 在线一区视频| 亚洲国产欧美国产综合一区| 国产精品久久久久久影院8一贰佰| 久久精品日韩一区二区三区| 99日韩精品| 伊人久久亚洲热| 国产精品人人做人人爽| 欧美高清视频在线观看| 欧美伊人影院| 在线中文字幕一区| 亚洲人成欧美中文字幕| 激情综合自拍| 国产一区美女| 国产精品永久免费视频| 欧美无乱码久久久免费午夜一区| 你懂的一区二区| 久久人人97超碰国产公开结果 | 日韩午夜精品| 在线观看亚洲专区| 国产亚洲a∨片在线观看| 国产精品国产一区二区| 欧美日韩亚洲综合在线| 欧美精品电影| 欧美好骚综合网| 麻豆亚洲精品| 免费成人av| 另类图片综合电影| 巨乳诱惑日韩免费av| 久久精品人人做人人综合| 午夜久久一区| 欧美伊人影院| 久久精品国产精品亚洲综合| 欧美在线国产精品| 久久久久久九九九九| 久久久青草青青国产亚洲免观| 久久久久9999亚洲精品| 久久久久久久性| 美女网站久久| 欧美精品一级| 国产精品红桃| 国产欧美日韩一区二区三区在线| 国产精品美女久久久免费| 国产欧美精品一区aⅴ影院| 国产目拍亚洲精品99久久精品| 国产精品久久久久久久一区探花| 国产精品日本一区二区| 国产精品一区二区久激情瑜伽| 国产伦精品一区二区三区照片91 | 美女主播精品视频一二三四| 亚洲激情视频在线| 国一区二区在线观看| 国产日韩欧美在线看| 国产婷婷色综合av蜜臀av| 国产丝袜一区二区| 国产曰批免费观看久久久| 国产午夜精品一区理论片飘花| 国产手机视频一区二区| 永久免费毛片在线播放不卡| 亚洲国产高清自拍| 亚洲欧美春色| 欧美在线三区| 欧美肥婆bbw| 欧美午夜欧美| 国产视频一区二区在线观看| 影音先锋日韩精品| 99热精品在线| 久久精品国产一区二区电影 | 麻豆av福利av久久av| 欧美激情偷拍| 国产欧美日韩综合精品二区| 亚洲国产第一| 亚洲综合999| 久久综合久久88| 国产精品久久久久三级| 在线精品国产欧美| 亚洲女同性videos| 欧美不卡在线| 国产热re99久久6国产精品| 日韩视频久久| 久久久亚洲国产美女国产盗摄| 欧美另类女人| 在线观看视频一区| 午夜一区二区三区在线观看| 欧美精品999| 黑人操亚洲美女惩罚| 亚洲视频一二| 老司机精品视频网站| 国产精品五月天| 亚洲国产精品国自产拍av秋霞| 性欧美xxxx大乳国产app| 欧美日韩18| 亚洲春色另类小说| 欧美一区二区三区视频免费| 欧美午夜片欧美片在线观看| 亚洲国产精品成人综合| 久久精品国产99| 国产精品视区| 亚洲午夜久久久久久尤物 | 久久视频一区二区| 国产精品亚洲成人| 一区二区久久久久| 欧美国产精品v| 在线精品在线| 久久在线免费| 狠狠入ady亚洲精品| 久久国产黑丝| 国产一区二区三区久久| 性色一区二区三区| 国产日产亚洲精品系列| 性久久久久久久| 国产麻豆91精品| 性欧美大战久久久久久久久| 国产精品扒开腿做爽爽爽视频 | 亚洲欧美日韩在线播放| 国产精品高潮呻吟久久| 亚洲色无码播放| 国产精品毛片在线| 先锋亚洲精品| 国产精品永久| 欧美在线不卡视频| 在线观看91精品国产麻豆| 久久免费99精品久久久久久| 国产一区二区中文| 久久久精品视频成人| 在线精品一区二区| 欧美电影电视剧在线观看| 亚洲激情在线视频| 欧美日韩国产首页在线观看| 亚洲图片欧美一区| 国产丝袜美腿一区二区三区| 久久久久国产精品午夜一区| 亚洲国产精品久久人人爱蜜臀| 欧美激情久久久| 亚洲摸下面视频| 国内精品美女在线观看| 欧美成ee人免费视频| 一本久久a久久免费精品不卡| 国产精品你懂的| 久久综合九色综合欧美就去吻 | 午夜精品在线| 在线观看不卡av| 欧美日韩一区二区在线播放| 午夜精品视频在线| 亚洲电影中文字幕| 国产精品国产三级国产专播精品人| 欧美伊人久久久久久午夜久久久久| 国自产拍偷拍福利精品免费一| 欧美极品在线视频| 欧美一级黄色录像| 亚洲日本va午夜在线影院| 国产欧美一区二区精品婷婷| 欧美激情一二三区| 久久精品成人一区二区三区 | 在线观看成人小视频| 欧美美女bbbb| 久久精品一区二区国产| 男人天堂欧美日韩| 亚洲毛片av在线| 国产日韩精品电影| 久久中文字幕导航| 日韩视频免费观看高清在线视频 | 99国产麻豆精品| 国产三区二区一区久久| 欧美日本精品在线| 久久亚洲免费| 午夜电影亚洲| 亚洲精品韩国| 狠狠色综合网| 国产欧美日韩一区二区三区在线观看| 欧美风情在线观看| 欧美在线国产| 亚洲欧美国产精品va在线观看| 亚洲精品欧美日韩| 伊人成人在线视频| 亚洲欧美国产另类| 国产亚洲欧洲一区高清在线观看 | 亚洲国产视频一区二区|