性能評(píng)定為綜合評(píng)定含衔,不同數(shù)據(jù)量二庵,不同測(cè)試環(huán)境存在一定偏差,性能差的處理方式在數(shù)據(jù)少或者特定情況下處理速度優(yōu)于其他處理方式杭隙,我基本測(cè)試結(jié)果和書籍介紹還是貼近的,網(wǎng)上有些博客在那瞎說(shuō)測(cè)試代碼寫得都有問(wèn)題痰憎,一度以為第一種寫法性能也是優(yōu)仔細(xì)一看那個(gè)博客根本不是對(duì)子元素進(jìn)行操作而是對(duì)步進(jìn)進(jìn)行操作攀涵,搞得我還以為書上寫錯(cuò)了,代碼還是要自己打一遍才知道
1 for(var i= 0; i < arry.length;i++){};
最為常見的寫法:性能中等汁果,寫法不好看
2 for(var i= 0,len = arry.length; i<len;i++){};
在最常見寫法中引入局部變量,每次循環(huán)是不需要再讀取數(shù)組長(zhǎng)度鳄乏,性能優(yōu)(推薦寫法)
3 for(var iin arry){};
對(duì)象遍歷方法:性能差棘利,安全性差,會(huì)遍歷原型鏈,極不推薦
4 Array.prototype.each= function(fn){var that = this;if(!fn){return}for(var i=0;i<that.length;i++){fn.apply(this[i],[this[i],i]);}}
用法arry.each(function(child,index))
原型擴(kuò)展方法:性能差善玫,優(yōu)勢(shì)獨(dú)特,代碼美觀性高蜗元,可讀性強(qiáng)(數(shù)據(jù)量低時(shí)系冗,框架封裝時(shí)奕扣,推薦使用)
5 for(var i= 0,child; child = arry[i++];){};
以數(shù)組子元素值為循環(huán)判斷條件:性能極優(yōu)掌敬,數(shù)據(jù)量越大優(yōu)勢(shì)越明顯,代碼美觀性也強(qiáng)地熄,可讀性高芯杀,劣勢(shì)明顯數(shù)組中子元素不能為空,不能為0瘪匿,這是最尷尬了大數(shù)據(jù)量是無(wú)法保證每個(gè)子元素的狀態(tài)寻馏,性能極高,代碼安全性極差诚欠。(如果能重?cái)?shù)據(jù)庫(kù)端保證排除無(wú)效數(shù)據(jù),再返回前端粉寞,用這種方式處理大數(shù)據(jù)量數(shù)據(jù)時(shí)優(yōu)勢(shì)明顯)
6其他原生方法以及jq方法
這些方法不常用左腔,有些有瀏覽器兼容性問(wèn)題,有些有性能問(wèn)題液样,關(guān)鍵我沒(méi)試過(guò),沒(méi)有寫過(guò)沒(méi)有發(fā)言權(quán)
總結(jié):代碼還是要從下面幾個(gè)方面去綜合考慮性能坊秸,可維護(hù)性澎怒,可拓展性,以及交互提升這些方面