:大きなFORループ内の新しいローカル変数は、これが問題ですか?この単純な例機能で
doSomething = function(withThisId) {
var videos = getVideos(), // array of videos
discovered = false
;
for(var i = 0; i < 50000; i++) {
var keepToCheck = videos[i];
if(keepToCheck.id == withThisId) {
discovered = true;
break;
}
}
return discovered;
};
私があれば知りたいのですが
:
が
for
ループ内で、我々は反復し、その後のためにそれを使用するたびにkeepToCheck
と呼ばれる新しい変数を初期化します何か。これは、毎回新しい変数が作成されることを意味しますか?そのため、GCがクリアするまで、メモリに50,000の変数が存在する可能性がありますか?または、JSエンジンは、変数を再利用し、複製を作成することができないことを知っているのに十分スマートですか?
var keepToCheck
をfor
ループの外側に設定してから、それをkeepToCheck = videos[i];
と設定するとパフォーマンスが向上しますか?
私はこれを調べようとしてきましたが、ネット上で何か示唆を見つけることはできませんでした。
JSガベージコレクションはブラウザに依存しているため、コールスタック中に実行される可能性があります。実際に伝える方法はありません。 – AutoSponge