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

首頁 > 編程 > JavaScript > 正文

實現JavaScript高性能的數據存儲

2019-11-19 18:34:43
字體:
來源:轉載
供稿:網友

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:http://www.cnblogs.com/aaronjs/p/3370176.html

8.內存泄露

內存泄露是指一塊被分配的內存既不能使用,又不能回收,直到瀏覽器進程結束。在C++中,因為是手動管理內存,內存泄露是經常出現的事情。而現在流行的C#和Java等語言采用了自動垃圾回收方法管理內存,正常使用的情況下幾乎不會發生內存泄露。瀏覽器中也是采用自動垃圾回收方法管理內存,但由于瀏覽器垃圾回收方法有bug,會產生內存泄露。

內存泄露的幾種情況

  • 循環引用
  • Javascript閉包
  • DOM插入順序

一個DOM對象被一個Javascript對象引用,與此同時又引用同一個或其它的Javascript對象,這個DOM對象可能會引發內存泄漏。這個DOM對象的引用將不會在腳本停止的時候被垃圾回收器回收。要想破壞循環引用,引用DOM元素的對象或DOM對象的引用需要被賦值為null。

具體的就深入討論了,這里的總結

  • JS的內存泄露,無怪乎就是從DOM中remove了元素,但是依然有變量或者對象引用了該DOM對象。然后內存中無法刪除。使得瀏覽器的內存占用居高不下。這種內存占用,隨著瀏覽器的刷新,會自動釋放。
  • 而另外一種情況,就是循環引用,一個DOM對象和JS對象之間互相引用,這樣造成的情況更嚴重一些,即使刷新,內存也不會減少。這就是嚴格意義上說的內存泄露了。

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持武林網!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 云梦县| 镇原县| 双柏县| 宜州市| 云霄县| 房产| 上栗县| 沅陵县| 子长县| 车致| 黑河市| 常熟市| 瑞安市| 怀安县| 启东市| 镇远县| 台山市| 达拉特旗| 德令哈市| 乐亭县| 班玛县| 遵义市| 黑龙江省| 长宁县| 肃北| 伊金霍洛旗| 涞源县| 凤城市| 勃利县| 浮山县| 武山县| 宝清县| 漠河县| 林周县| 子洲县| 米泉市| 泽库县| 东安县| 独山县| 德庆县| 临洮县|