作者 Mark 'Tarquin' Wilton-Jones · 2006年11月2日
本文翻譯自 Efficient JavaScript
原譯文地址 http://kb.operachina.com/node/207
傳統上,網頁中不會有大量的腳本,至少腳本很少會影響網頁的性能。但隨著網頁越來越像 Web 應用程序,腳本的效率對網頁性能影響越來越大。而且使用 Web 技術開發的應用程序現在越來越多,因此提高腳本的性能變得很重要。
對于桌面應用程序,通常使用編譯器將源代碼轉換為二進制程序。編譯器可以花費大量時間優化最終二進制程序的效率。Web 應用程序則不同。因為Web應用程序需要運行在不同的瀏覽器、平臺和架構中,不可能事先完全編譯。瀏覽器在獲得腳本后要執行解釋和編譯工作。用戶要求不僅要求網頁能快速的載入,而且要求最終 Web 應用程序執行的效果要和桌面應用程序的一樣流暢。Web 應用程序應能運行在多種設備上,從普通的桌面電腦到手機。
瀏覽器并不很擅長此項工作。雖然 Opera 有著當前最快的腳本引擎,但瀏覽器有不可避免的局限性,這時就需要 Web 開發者的幫助。Web開發者提高 Web 應用程序的性能的方法很多而且也很簡單,如只需要將一種循環變成另一種、將組合樣式分解成三個或者只添加實際需要的腳本。
本文從 ECMAScript/JavaScript, DOM, 和頁面載入方面分別介紹幾種簡單的能提高 Web 應用程序性能的方法。
eval
或 Function
構造函數 eval
如果你需要函數,那就用函數 with
不要在影響性能的關鍵函數中使用 try-catch-finally
分隔 eval
和 with
避免使用全局變量 注意隱式對象轉換 在關鍵函數中避免 for-in
優化 string 合并 基本運算符比函數調用更快 向 setTimeout()
和 setInterval()
傳送函數名,而不要傳送字符串 location.replace()
控制歷史項 eval
或 Function
構造函數每次 eval
或 Function
構造函數作用于字符串表示的源代碼時,腳本引擎都需要將源代碼轉換成可執行代碼。這是很消耗資源的操作 —— 通常比簡單的函數調用慢100倍以上。
新聞熱點
疑難解答
圖片精選