国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

實現高性能javascript的注意事項

2024-05-06 15:38:57
字體:
來源:轉載
供稿:網友

1.少用全局變量

原因:因為作用域鏈是一個堆棧的結構,所以遵循先進先出的原則,而javascript引擎在解析代碼的時候,將全局對象放在棧底,然后向上依次出現的是不同作用域的活動對象(這些活動對象除了閉包沒有相互依賴的關系),所以在查找變量的時候會從該活動對象開始,然后是閉包它的活動對象,最后是全局對象,如果全局變量過多就會影響獲得變量時的速度,所以不要過多使用全局變量。

2.盡量使用局部變量封裝全局變量

原因:正如前面所說,活動對象在棧的頂端,所以最先查找它的內容,當我們將document封裝成局部變量后就會減少深層次查找的次數,使性能提高。

3.操作數組長度、對象屬性時,盡量使用局部變量封裝。

原因:IE、opera存取數組比對象屬性快,而FF chrome safari正好相反,所以兼顧這些,我們最好封裝一下。

4.盡量減少對象屬性的深度

原因:深度太大,會增加javascript引擎對取得值的地址查找的開銷,相當于增加了多層嵌套的指針,導致性能損失。

5.在for循環中盡量使用局部變量封裝條件項

原因:例如for(var i=0;i<divs.length;i++) 的時候,如果divs為document.getElementsByTagName('div'),這樣在每次循環判斷條件的時候都會對DOM文檔進行一次遍歷求得長度,所以講length封裝起來,會提升性能。

6.謹慎的處理HTMLcollection對象(比如childNodes getElementsByTagName等取得DOM元素集合的對象),最好將其封裝到數組里操作。

原因:還是因為操作DOM元素需要遍歷DOM文檔,而非DOM元素則不用遍歷,所以請盡量減少對DOM的操作,而將DOM集合放到數組中去。

7.在針對safari瀏覽器的開發過程中,請盡量使用“.”獲取對象屬性而不是用“[]”。

8.建議在少于兩次判斷的環境下使用if-else,而大于三次的就用switch吧。而超過10次的時候,還是使用數組或json對象來通過索引來查找吧(這種模式相對簡單)

9.如果循環數組的順序從低到高或從高到低沒有差別,那么還是從高到低比較好,比如我們循環輸出一個數組中的內容:

var arr=[1,2,3,4,5];var i=0;while(i<arr.length){alert(arr[i]);}//這樣開銷會比較大,因為每次都要遍歷求出數組元素的長度//----------------------------------var i=arr.length;while(i--){alert(arr[i]);}//使用局部變量保存數組長度,然后該變量自減,連while中的判斷都省了,因為0轉換為布爾值就是false。

10.盡量少使用for-in循環,將其盡量改造成while 或for循環。

11.處理大數組時,請遵循duff策略。

duff策略:將大數組的個數拆分成8個一組,對這8個為一個單位的數組的操作不用循環處理,而是不怕繁瑣的寫出8行處理數組元素的代碼,這樣會提升大數組操作的性能。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 青神县| 舞钢市| 贺兰县| 蓝山县| 常宁市| 南漳县| 肥东县| 大足县| 虎林市| 碌曲县| 广安市| 邵阳县| 义马市| 长寿区| 安阳市| 平度市| 衡水市| 申扎县| 永寿县| 惠水县| 汉沽区| 清流县| 奎屯市| 江门市| 民勤县| 宁武县| 大宁县| 黑河市| 平阴县| 彝良县| 大渡口区| 鲁甸县| 蒙阴县| 吉林市| 盐池县| 鞍山市| 新建县| 汉川市| 金坛市| 巴林左旗| 兰考县|