首頁 web前端 js教程 實現JavaScript高效能的資料存儲

實現JavaScript高效能的資料存儲

Feb 20, 2017 pm 02:29 PM

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)!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
為什麼localstorage無法成功保存資料? 為什麼localstorage無法成功保存資料? Jan 03, 2024 pm 01:41 PM

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

簡易JavaScript教學:取得HTTP狀態碼的方法 簡易JavaScript教學:取得HTTP狀態碼的方法 Jan 05, 2024 pm 06:08 PM

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

如何在JavaScript中取得HTTP狀態碼的簡單方法 如何在JavaScript中取得HTTP狀態碼的簡單方法 Jan 05, 2024 pm 01:37 PM

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

打造高效能Python程式設計工作站的電腦配置建議 打造高效能Python程式設計工作站的電腦配置建議 Mar 25, 2024 pm 07:12 PM

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

是什麼類型的文件是dat檔? 是什麼類型的文件是dat檔? Feb 19, 2024 am 11:32 AM

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

2024 華為資料儲存新春新品發表會 2 月 20 日舉行 2024 華為資料儲存新春新品發表會 2 月 20 日舉行 Feb 12, 2024 pm 10:48 PM

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

JavaScript和WebSocket:打造高效率的即時搜尋引擎 JavaScript和WebSocket:打造高效率的即時搜尋引擎 Dec 17, 2023 pm 10:13 PM

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

有效防止Localstorage資料遺失的方法 有效防止Localstorage資料遺失的方法 Jan 13, 2024 am 10:25 AM

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

See all articles