国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

JavaScript如何提升代碼性能的用法匯總

來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 20:15:05
文檔

JavaScript如何提升代碼性能的用法匯總

JavaScript如何提升代碼性能的用法匯總:使用字符串累加計算風(fēng)格 使用+運算會在內(nèi)存中創(chuàng)建一個新的字符串并把連接的值賦給它。僅僅是將這個結(jié)果賦值給一個變量。 為了避免連接結(jié)果的中間變量,可以使用+=來直接賦值結(jié)果。 運行緩慢的代碼: a += 'x' + 'y';運行更快的代碼:
推薦度:
導(dǎo)讀JavaScript如何提升代碼性能的用法匯總:使用字符串累加計算風(fēng)格 使用+運算會在內(nèi)存中創(chuàng)建一個新的字符串并把連接的值賦給它。僅僅是將這個結(jié)果賦值給一個變量。 為了避免連接結(jié)果的中間變量,可以使用+=來直接賦值結(jié)果。 運行緩慢的代碼: a += 'x' + 'y';運行更快的代碼:

使用字符串累加計算風(fēng)格

使用+運算會在內(nèi)存中創(chuàng)建一個新的字符串并把連接的值賦給它。僅僅是將這個結(jié)果賦值給一個變量。
為了避免連接結(jié)果的中間變量,可以使用+=來直接賦值結(jié)果。

運行緩慢的代碼:

a += 'x' + 'y';

運行更快的代碼:

a += 'x'; a += 'y';

原操作會比函數(shù)調(diào)用快
可以考慮在性能要求關(guān)鍵的循環(huán)和函數(shù)中使用可以替代的原操作。
運行緩慢的代碼:

var min = Math.min(a, b); 
arr.push(val);

運行更快的代碼:

var min = a < b ? a : b; 
arr[arr.length] = val;

設(shè)置setTimeout() 和 setInterval() 時傳遞函數(shù)名而不是字符串

如果你傳遞一個字符串到setTimeout() 或者 setInterval()中,字符串將會被eval計算而導(dǎo)致緩慢。
使用一個匿名函數(shù)包裝來代替,這樣在編譯的時候就可以被解釋和優(yōu)化。

運行緩慢的代碼:

setInterval('doSomethingPeriodically()', 1000); 
setTimeOut('doSomethingAfterFiveSeconds()', 5000);

運行更快的代碼:

setInterval(doSomethingPeriodically, 1000); 
setTimeOut(doSomethingAfterFiveSeconds, 5000);

避免在對象中使用不需要的DOM引用

不要這么做:

var car = new Object(); 
car.color = "red"; 
car.type = "sedan"

更好的一種形式:

var car = { 
color : "red"; 
type : "sedan" 
}

最清晰的目標速度,最小化作用域鏈

低效率方法:

var url = location.href;

一種高效形式:

var url = window.location.href;

試著在腳本中少使用注釋,避免使用長變量名
盡可能的保證注釋少或者避免使用注釋,特別是在函數(shù),循環(huán)以及數(shù)組中。
注釋不必要的減緩腳本執(zhí)行并且增加了文件大小。比如:

不建議的形式:

function someFunction() 
{ 
var person_full_name="somename"; /* stores the full name*/ 
}

更好的寫法:

function someFunction() 
{ 
var name="somename"; 
}

在當(dāng)前作用域存儲應(yīng)用的外部變量
當(dāng)一個函數(shù)被執(zhí)行的運行上下問被穿件,一個活動的對象會包含所有局部變量會被推到上下文鏈的前面。
在作用域鏈中,最慢的是清楚的識別標識符,意味著局部變量是最快的。存儲頻繁使用的外部變量讀和寫都會明顯的加快。這對于全局變量和其他深層次的標識符查找特別明顯。
同樣,在當(dāng)前作用域中的變量(var myVar)比對象像屬性的訪問速度快(this.myVar)。

運行緩慢的代碼:

function doSomething(text) { 
var ps = document.getElementsByTagName('p'), 
text = ['foo', /* ... n ... */, 'bar']; 
for (var i = 0, l = ps.length; i < l; i++) { 
ps[i].innerHTML = text[i]; 
} 
}

運行更快的代碼:

function doSomethingFaster(text) { 
var doc = document, 
ps = doc.getElementsByTagName('p'), 
text = ['foo', /* ... n ... */, 'bar']; 
for (var i = 0, l = ps.length; i < l; i++) { 
ps[i].innerHTML = text[i]; 
} 
}

如果你需要訪問一個元素(如 head)在一個大的循環(huán)中,使用一個本地的DOM訪問(如例子中的get)會更快。
運行更快的代碼:

function doSomethingElseFaster() { 
var get = document.getElementsByTagName; 
for (var i = 0, i < 100000; i++) { 
get('head'); 
} 
}

使用變量緩存值
在做重復(fù)工作的地方使用局部變量緩存值。
下面的一組例子表明了存儲值到局部變量的廣泛意義。

例子1.計算執(zhí)行前在循環(huán)體內(nèi)使用變量存儲數(shù)學(xué)函數(shù)
錯誤的方法:

var d=35; 
for (var i=0; i<1000; i++) { 
y += Math.sin(d)*10; 
}

更好的處理:

var d = 55; 
var math_sind = Math.sin(d)*10; 
for (var i=0; i<1000; i++) { 
y += math_sind; 
}


例子2.保存數(shù)組的長度在循環(huán)中使用
糟糕的處理:
數(shù)組的長度每次都會被重復(fù)計算

for (var i = 0; i < arr.length; i++) { 
// do something 
}

更好的改進:
更好的方法是保存數(shù)組的長度

for (var i = 0, len = arr.length; i < len; i++) { 
// do something 
}

總的來說,如果已經(jīng)做了一次,我們就不需要重復(fù)的做不必要的工作。例如,作用域或者函數(shù)中多次使用到計算的一個表達式的值,保存到變量可以使它多次被使用,否則我們會過頭的聲明一個變量并賦值然后只適用一次。所以請記住這些。

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

JavaScript如何提升代碼性能的用法匯總

JavaScript如何提升代碼性能的用法匯總:使用字符串累加計算風(fēng)格 使用+運算會在內(nèi)存中創(chuàng)建一個新的字符串并把連接的值賦給它。僅僅是將這個結(jié)果賦值給一個變量。 為了避免連接結(jié)果的中間變量,可以使用+=來直接賦值結(jié)果。 運行緩慢的代碼: a += 'x' + 'y';運行更快的代碼:
推薦度:
標簽: 提升 使用 提高
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 亚洲日韩精品欧美一区二区 | 99精品热视频 | 亚洲好骚综合 | 精品久久久久久久 | 日产精品一区二区三区免费 | 精品一区二区三区视频日产 | 久久久毛片 | 精品一区二区三区免费毛片爱 | 午夜大片在线观看 | 欧美日a | 国产精品视频免费视频 | 91专区 | 免费观看a毛片一区二区不卡 | 国产免费一区二区三区免费视频 | 国产成人麻豆精品 | 羞羞网站在线观看 | 亚洲欧美成人综合久久久 | 亚洲午夜久久久久中文字幕 | 国产热久久精 | 亚洲欧美日本另类激情 | 精品伊人久久久 | 久久久久久久国产精品 | 欧美日韩 在线播放 | 亚洲三级一区 | 国产欧美综合精品一区二区 | 国产在线视频一区二区三区 | 一区在线观看 | 免费国产高清视频 | 一本综合久久国产二区 | 最近中文字幕电影在线看 | 欧美精品aaa久久久影院 | 久久国产精品久久精 | 青青成人福利国产在线视频 | 么公又大又硬又粗又爽的视频 | 国产99视频精品免费观看7 | 在线观看日韩视频 | 一区二区三区四区亚洲 | 精品日韩欧美国产一区二区 | 另类第一页| 国产精品久久久久激情影院 | 午夜欧美 |