實現JavaScript高效能的資料存儲
1.JavaScript中四種基本資料存取位置:字面量,本地變量,數組元素,物件成員。
一般來說:[字面量,局部變數]運行速度>[陣列,物件成員]
2.內部屬性包含了一個函數被創建的作用域中物件的集合。這個集合稱為作用域鏈。
3.執行函數->建立執行環境->建立活動物件(即函數運行時變數物件)。
所以多次呼叫同一個函數會導致創建多個執行環境。
4.函數執行過程
每遇到一個變數都會經歷一次識別碼解析過程,從哪裡取得或儲存資料。過程搜尋執行環境的作用域鏈。正是這種搜尋過程影響了效能。
5.標識符解析的效能
全域變數總是存在於執行環境作用域的最末端。局部變數是第一順位解析。
經驗法則:如果某個跨作用域的值在函數中被引用一次以上,那麼就把他儲存到局部變數中。
如:
function initUI(){ var bd=document.body; //后面有多次doucument这个全局对象的调用 } //->优化后 function initUI(){ var doc=document; bd=doc.body; //把doucument这个全局对象的引用存储到局部变量doc中 }
6.改變作用域鏈
一般來說,一個執行環境的作用域鏈不會改變的。
<1>with可以暫時改變作用域鏈
width用來給物件的所有屬性建立一個變數
function initUI(){ with(document){ var bd=body; } }
當程式碼執行到with時,執行環境的作用域鏈被暫時改變了。一個新的變數物件唄創建,它包含了參數指定物件的所有屬性。 這個物件唄推入作用域鏈的首位,所以這時候所有的局部變數處於的哥第二個作用域鏈物件中,因此存取代價更高了。
<2>try-catch
try語句發生錯誤的時候,執行程序會自動跳到catch。 然後把異常物件推入一個變數物件並置於作用域的首位。
注意:一旦catch子語句執行完畢,作用域鏈就會回到先前的狀態。
7.閉包引發的效能問題
閉包是JavaScript最強大的特性之一。
由於閉包包含了執行了與環境作用域鏈相同物件的引用,函數的活動物件不會被銷毀,造成更多的記憶體開銷。
關注的效能點:經常存取跨作用域的識別碼時,每次存取都會帶來效能損失。
Start:19:41:45 2015-11-21 引用自by Aaron:/content/3493261.html
8.記憶體洩漏
記憶體外洩是指一塊被分配的記憶體既不能使用,又不能回收,直到瀏覽器進程結束。在C++中,因為是手動管理內存,記憶體外洩是經常出現的事情。而現在流行的C#和Java等語言採用了自動垃圾回收方法管理內存,正常使用的情況下幾乎不會發生內存洩露。瀏覽器中也是採用自動垃圾回收方法管理內存,但由於瀏覽器垃圾回收方法有bug,會產生記憶體外洩。
記憶體洩漏的幾種情況
循環引用
Javascript閉包
DOM插入順序
一個DOM物件被一個Javascript物件引用,同時引用同一個或其它的Javascript對象,這個DOM物件可能會引發記憶體洩漏。這個DOM物件的引用將不會在腳本停止的時候被垃圾回收器回收。要破壞循環引用,引用DOM元素的物件或DOM物件的參考需要被賦值為null。
具體的就深入討論了,這裡的總結
JS的內存洩露,無怪乎就是從DOM中remove了元素,但是依然有變量或者對象引用了該DOM對象。然後內存中無法刪除。使得瀏覽器的記憶體佔用居高不下。這種記憶體佔用,隨著瀏覽器的刷新,會自動釋放。
而另一個情況,就是循環引用,一個DOM物件和JS物件之間互相引用,這樣造成的情況更嚴重一些,即使刷新,內存也不會減少。這就是嚴格意義上說的記憶體洩漏了。
以上就是實現JavaScript高效能的資料儲存 的內容,更多相關內容請關注PHP中文網(www.php.cn)!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

儲存資料到localstorage為何總是失敗?需要具體程式碼範例在前端開發中,我們經常需要將資料儲存在瀏覽器端,以便提高使用者體驗和方便之後的資料存取。 Localstorage是HTML5提供的一項用於客戶端儲存資料的技術,它提供了一種簡單的方法來儲存數據,並且可以在頁面刷新或關閉後保持資料的持久化。然而,當我們使用localstorage進行資料儲存時,有時

JavaScript教學:如何取得HTTP狀態碼,需要具體程式碼範例前言:在Web開發中,經常會涉及到與伺服器進行資料互動的場景。在與伺服器進行通訊時,我們經常需要取得傳回的HTTP狀態碼來判斷操作是否成功,並根據不同的狀態碼來進行對應的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態碼,並提供一些實用的程式碼範例。使用XMLHttpRequest

JavaScript中的HTTP狀態碼取得方法簡介:在進行前端開發中,我們常常需要處理與後端介面的交互,而HTTP狀態碼就是其中非常重要的一部分。了解並取得HTTP狀態碼有助於我們更好地處理介面傳回的資料。本文將介紹使用JavaScript取得HTTP狀態碼的方法,並提供具體程式碼範例。一、什麼是HTTP狀態碼HTTP狀態碼是指當瀏覽器向伺服器發起請求時,服務

標題:打造高效能Python程式設計工作站的電腦配置建議隨著Python語言在資料分析、人工智慧等領域的廣泛應用,越來越多的開發者和研究人員對於建構高效能的Python程式設計工作站需求日益增加。在選擇電腦配置時,除了效能方面的考量外,還應該根據Python編程的特性進行最佳化,以提高程式效率和運行速度。本文將介紹如何打造一台高效能的Python程式設計工作站,並提供具體

dat檔案是一種通用的資料檔案格式,它可以用來儲存各種類型的資料。 dat檔案可以包含文字、圖像、音訊、視訊等不同的資料形式。它被廣泛用於許多不同的應用程式和作業系統。 dat文件通常是二進位文件,以位元組形式儲存數據,而不是以文字形式儲存。這意味著dat檔案不能直接透過文字編輯器來修改或檢視其內容。相反,需要使用特定的軟體或工具來處理和解析dat檔案的資料。 d

本站2月11日消息,根據華為官方消息,2024華為資料儲存新春新品發表會將於2月20日舉行。本站附大會介紹:數據是數位經濟時代的重要生產要素,也是價值創造的關鍵來源,同時也是國家戰略資源。資料基礎設施在資料要素的供給、流通和應用方面起著關鍵的支撐作用。它負責可靠地儲存和高效管理資料資產,並根據需求進行流動。作為國家數據戰略的重要組成部分,數據基礎設施是實現數據強國的基石。華為在ICT基礎建設領域不斷創新,發展先進數據存力,為數據資產「存得牢、供得出、流得動、用得好」發揮底座力量。同時,華為堅持開

JavaScript和WebSocket:打造高效率的即時搜尋引擎引言:隨著網路的發展,使用者對即時搜尋引擎的要求也越來越高。傳統的搜尋引擎在進行搜尋時,使用者需要點擊搜尋按鈕後才能得到結果,這種方式無法滿足使用者對於即時搜尋結果的需求。因此,採用JavaScript和WebSocket技術來實現即時搜尋引擎成為了一個熱門的話題。本文將詳細介紹使用JavaScri

如何避免Localstorage資料遺失?隨著Web應用程式的發展,資料的持久化成為了一個重要的議題。而Localstorage是一種非常常用的瀏覽器所提供的資料持久化方案。但是,由於各種原因,LocalStorage中儲存的資料有可能會遺失。本文將介紹幾種避免LocalStorage資料遺失的方法,並提供具體的程式碼範例。一、定期備份資料定期備份資料是避免Lo
