溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

JavaScript中引發(fā)內(nèi)存泄漏的情況有哪些

發(fā)布時(shí)間:2021-05-06 16:17:09 來源:億速云 閱讀:106 作者:Leah 欄目:編程語言

JavaScript中引發(fā)內(nèi)存泄漏的情況有哪些?針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。

JavaScript的特點(diǎn)

1.JavaScript主要用來向HTML頁面添加交互行為。 2.JavaScript可以直接嵌入到HTML頁面,但寫成單獨(dú)的js文件有利于結(jié)構(gòu)和行為的分離。 3.JavaScript具有跨平臺(tái)特性,在絕大多數(shù)瀏覽器的支持下,可以在多種平臺(tái)下運(yùn)行。

1、意外的全局變量

function foo(arg) {
    bar = "this is a hidden global variable";
}

bar沒被聲明,會(huì)變成一個(gè)全局變量,在頁面關(guān)閉之前不會(huì)被釋放。

2、忽略的計(jì)時(shí)器或回調(diào)函數(shù)

var someResource = getData();
setInterval(function() {
    var node = document.getElementById('Node');
    if(node) {
        // 處理 node 和 someResource
        node.innerHTML = JSON.stringify(someResource));
    }
}, 1000);

3、閉包

閉包可以維持函數(shù)內(nèi)局部變量,使其得不到釋放。解決方法為將事件處理函數(shù)定義為外部,解除封閉包,或者在定義事件處理函數(shù)的外部函數(shù)中,刪除對(duì)dom的引用。

function bindEvent(){
  var obj=document.createElement('xxx')
  obj.onclick=function(){
    // Even if it is a empty function
  }
}

關(guān)于JavaScript中引發(fā)內(nèi)存泄漏的情況有哪些問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI