Fastest way to build an HTML string(拼裝html字符串的最快方法)
原文:http://james.padolsey.com/javascript/fastest-way-to-build-an-html-string/
var arr = ['item 1', 'item 2', 'item 3', ...],
list = '';
for (var i = 0, l = arr.length; i < l; i++) {
list += '<li>' + arr + '</li>';
}
list = '<ul>' + list + '</ul>';//最低效的方式。
var arr = ['item 1', 'item 2', 'item 3', ...], list = [];for (var i = 0, l = arr.length; i < l; i++) { list[list.length] = '<li>' + arr + '</li>';}list = '<ul>' + list.join('') + '</ul>';;//比上一種的方式快。
var arr = ['item 1', 'item 2', 'item 3', ...];var list = '<ul><li>' + arr.join('</li><li>') + '</li></ul>';//最優(yōu)的方式。
執(zhí)行1000 次:"String concat"
(ms)
"Array pushing"
(ms)
"Native join()"
(ms)
Firefox 314714865Opera 917212578IE 7500229779Chrome 2638872Safari 4b14614160Averages20555970
只有chrome比較特別,第一種方法反而是最快的。
中文翻譯版本
第一種:逐個(gè)字符串相加
var arr = ['item 1', 'item 2', 'item 3', ...],
list = '';
for (var i = 0, l = arr.length; i < l; i++) {
list += '<li>' + arr[i] + '';
}
list = '<ul>' + list + '</ul>';
這種最常見(jiàn)的,但是效率最低!代碼邏輯相對(duì)來(lái)說(shuō)復(fù)雜。
第二種:逐個(gè) push 進(jìn)數(shù)組
var arr = ['item 1', 'item 2', 'item 3', ...],
list = [];
for (var i = 0, l = arr.length; i < l; i++) {
list[list.length] = '<li>' + arr[i] + '';
}
list = '<ul>' + list.join('') + '</ul>';
比上一種方法稍微快一些,但還是不夠好…
第三種:直接join()
var arr = ['item 1', 'item 2', 'item 3', ...];
var list = '<ul><li>' + arr.join('</li><li>') + '</li></ul>';
使用原生的方法(比如 join()),不管它后面是怎么實(shí)現(xiàn)的,一般都比其他方法快很多,而且代碼非常簡(jiǎn)潔。
使用原生的方法(比如 join()),不管它后面是怎么實(shí)現(xiàn)的,一般都比其他方法快很多,而且代碼非常簡(jiǎn)潔。
瀏覽器性能
每種方法是使用一個(gè)長(zhǎng)度為 130 的數(shù)組來(lái)測(cè)試,其中每個(gè)元素的長(zhǎng)度是多種多樣的,防止瀏覽器對(duì)一定長(zhǎng)度的字符串做特殊的優(yōu)化;每種方法測(cè)試了 1000 次;下面的結(jié)果顯示,執(zhí)行完這 1000 次需要的時(shí)間:
- JS下高效拼裝字符串的幾種方法比較與測(cè)試代碼
- javascript下高性能字符串連接StringBuffer類
- javascript中字符串拼接需注意的問(wèn)題
- javascript中字符串替換函數(shù)replace()方法與c# 、vb 替換有一點(diǎn)不同
- JavaScript trim 去除字符串空格的三種方法(附代碼詳解)
- javascript轉(zhuǎn)換字符串為dom對(duì)象(字符串動(dòng)態(tài)創(chuàng)建dom)
- 在光標(biāo)處插入字符串的實(shí)現(xiàn)代碼 兼容IE,Firefox
- JavaScript 字符串操作的幾種常見(jiàn)方法
相關(guān)文章
JavaScript實(shí)現(xiàn)郵箱后綴提示功能的示例代碼
這篇文章主要介紹了JavaScript實(shí)現(xiàn)郵箱后綴提示功能的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12js 實(shí)現(xiàn)錨點(diǎn)跳轉(zhuǎn)示例解析
這篇文章主要為大家介紹了js實(shí)現(xiàn)錨點(diǎn)跳轉(zhuǎn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07js點(diǎn)擊出現(xiàn)場(chǎng)層層外點(diǎn)擊層消失的代碼
主要是修復(fù)了如果層上有東東的話,點(diǎn)擊也消失的情況2008-09-09js實(shí)現(xiàn)盒子移動(dòng)動(dòng)畫(huà)效果
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)盒子移動(dòng)動(dòng)畫(huà)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-08-08