最近看了一些分享的js內存泄漏典型案例,感覺這種代碼以前一直寫,現在不留意的話也一直這么寫,到現在發現寫代碼的時候老怕閉包和回調了,在前端出現泄露的話問題還不算非常嚴重,但如果后端使用nodejs寫出現內存泄露的話,這可會讓服務崩潰。為了嚴謹性,到這里問下各位技術達人。//一下是angularjs的controller模擬function($scope){$scope.todo1=todo1;$scope.todo2=todo2;$scope.todoAll={todo1:todo1..}}像這樣的回調其實就是一種閉包,那么這個時候會造成內存泄露嗎?再看這里functionfoo($scope){vartext='youclickme!!!';varclickHanlder=function(){alert(text);}$scope.clickHanlder=clickHanlder;}var$a={}foo($a);$a.clickHanlder();//這里的text被提到全局的作用域了,這種算內存泄露嗎?如果$a是DOM呢?vargloablObject={}varaddCallback=function(hanlder){//這樣的閉包回調有問題嗎?varvalue=function(){vartemp;if(true){temp=newValue(true);}else{temp=newValue();}returntemp;}hanlder(value);}addCallback(function(value){//1這里有問題嗎?globalObject.ref=value;//2這里呢?globalObject.ref=function(nv){alert(nv.todo(value));}});還有//下面的代碼大致模擬一下angularjs的寫法fn(function($add){varpro1='pro1';varpro2='pro2';returnfunction(){$add(pro1,pro2);}});類似這些寫法很經常,現在遇到閉包和回調我都分不出我寫的代碼會不會造成內存泄露了,js坑很大?。?!
js的閉包和回調到底怎么才會造成真的內存泄漏呢?
江戶川亂折騰
2019-04-08 11:19:11