3

私のアプリケーションでは、状態を変更すると、$ scope変数が存在し、タイムアウトでログオンすることに気付きました。どうしてこれなの?ヒープメモリを占有しないように完全に削除するにはどうしたらいいですか?平均で何ui-routerが状態を変更したときに角度コントローラーのスコープが変数を破棄しない

は、コントローラからの状態変化後

$scope.$on("$destroy",function(){ 
    setTimeout(function(){ 
     console.log($scope.whatever); 
    },10000); 
}); 

の$ scope.whateverはまだそれが削除されなかったという意味ログに記録し、です!何が起こっている?私は破壊イベントがスコープ内のすべてを破壊するだろうと考えましたか?

+0

変数を破棄したと言うと、不自然に聞こえます。このリンクは役に立ちます。 http://stackoverflow.com/questions/1596782/how-to-unset-a-javascript-variable – brk

答えて

1

これは、console.loggingによってタイムアウトのスコープ変数が参照されているため、JavaScriptは実行時までスコープ内のガベージコレクションを回避し、参照されなくなりました。弱参照JavaScriptのようなjavascriptはjavaにあります。

これは、大量のメモリリークを発生させるので、絶対に避けてください!スコープが破壊されたときに、変数が参照されていないことを確認してください!

関連する問題