第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JavaScript - 局部類變量會被垃圾收集嗎?

JavaScript - 局部類變量會被垃圾收集嗎?

大話西游666 2022-12-22 10:04:08
我有一個類使用遞歸在打字機風格的角色對話屏幕中播放 blip 音效:class DialogueBox extends Component{    constructor(props){        super(props)        this.state = {...        }        ...    }          typeWriter(txt,i,speed=50) {      if(i==txt.length){        ...        return      }      else{          // a blip sound effect plays on every new character typed          let sfx =  new Audio(speechBlip);          sfx.play();          ...          setTimeout(()=>this.typeWriter(txt,i+1,speed),speed);      }    }let sfx = new Audio(speechBlip)注意被多次實例化的局部變量。這會導致內(nèi)存中存儲大量永遠不會被清理的 Audio 對象嗎?我使用這種方法是因為我喜歡它聽起來比在構(gòu)造函數(shù)中創(chuàng)建一個 Audio() 并將其重新設(shè)置為 0 時間或僅在文件播放完成時重播更喜歡它。這種方法會嚴重拖累內(nèi)存嗎?我嘗試使用開發(fā)工具的內(nèi)存面板,但我不確定我是否正確解釋它并且不確定它將如何擴展......
查看完整描述

1 回答

?
楊魅力

TA貢獻1811條經(jīng)驗 獲得超6個贊

長話短說;博士;是的,它會被清理干凈

答:有可能無法清除。如果您曾經(jīng)存儲該 sfx 變量供以后使用(假設(shè)您添加了某種形式的事件、超時等...),那么它將在該偵聽器執(zhí)行后被清除。

這是一個非常非常情況的問題,請記住這一點!例如,如果您有一個事件發(fā)射器并將一個函數(shù)附加到一個on事件,那么該函數(shù)將不會從內(nèi)存中清除(例如)。

反正。如果該變量僅用于 do sfx.play(),那么它將從內(nèi)存中清除。

一個小建議。你為什么不創(chuàng)建一個類變量讓我們說:this.blipSound = new Audio(),并this.blipSound.play()在你需要它的地方使用,你不必像你建議的那樣每次都將它設(shè)置為 null 或 0,只需保留它?這樣一來,您就不必擔心內(nèi)存泄漏,因為該類只有一個實例?


查看完整回答
反對 回復 2022-12-22
  • 1 回答
  • 0 關(guān)注
  • 99 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號