HTML5中垃圾回收機制深度影響了網(wǎng)頁性能和用戶的體驗,而充分理解垃圾回收機制的工作原理和相關(guān)代碼實現(xiàn),可以提升網(wǎng)頁性能,優(yōu)化用戶的體驗。
var myObj = {name: "Tony", age: 20}; //新建一個對象 console.log(myObj); //輸出結(jié)果:{name: "Tony", age: 20} myObj = null; //將myObj對象賦值為null,以便釋放掉之前創(chuàng)建的對象
代碼實現(xiàn)中,我們通常需要創(chuàng)建很多對象,但同時也需要注意及時回收這些不再使用的對象,以免浪費系統(tǒng)資源。
var objArray = []; //創(chuàng)建一個數(shù)組 for (var i = 0; i< 10000; i++) { objArray[i] = {name: "Tony", age: 20}; //給數(shù)組中的每個元素賦值,注意不要忘記數(shù)組下標 } var obj = objArray[500]; //將數(shù)組中的某個對象賦值給一個變量 objArray = null; //將數(shù)組賦值為null,以便釋放內(nèi)存資源 console.log(obj); //可正常輸出結(jié)果:{name: "Tony", age: 20}
除了手動進行垃圾回收之外,HTML5還提供了自動垃圾回收機制,可自動檢測和釋放未引用的內(nèi)存。
function firstName() { var name = "Tony"; //在函數(shù)中創(chuàng)建一個變量 setTimeout(function() { console.log(name); //引用該變量,可正常輸出結(jié)果 }, 1000); } firstName(); //調(diào)用函數(shù)
上述代碼中,在函數(shù)內(nèi)部創(chuàng)建了一個變量name,在setTimeout函數(shù)中進行引用。由于該函數(shù)中的name變量已經(jīng)超過了其作用域,再也不會需要使用,因此可被垃圾回收機制自動檢測到并自動釋放。
上一篇y軸+css
下一篇zepto css選擇器