最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Do local variables inside of a loop get garbage collected? - Stack Overflow

programmeradmin1浏览0评论

I'm wondering if it is more efficient to place any vars referenced within a loop, outside of the loop - or can they get garbage collected like vars inside of a function?

var obj = {key:'val'};
for(var i=0; i<10; i++){
    console.log(obj);
}

or

for(var i=0; i<10; i++){
    var obj = {key:'val'};
    console.log(obj);
}

I tried to run some memory test in my browser's profiler but still couldn't tell which method was better.

I'm wondering if it is more efficient to place any vars referenced within a loop, outside of the loop - or can they get garbage collected like vars inside of a function?

var obj = {key:'val'};
for(var i=0; i<10; i++){
    console.log(obj);
}

or

for(var i=0; i<10; i++){
    var obj = {key:'val'};
    console.log(obj);
}

I tried to run some memory test in my browser's profiler but still couldn't tell which method was better.

Share Improve this question asked Oct 11, 2011 at 2:16 George HessGeorge Hess 6891 gold badge8 silver badges15 bronze badges
Add a ment  | 

3 Answers 3

Reset to default 6

var is function scoped, not blocked scoped, so it does not matter whether they appear inside the loop or not. What is the scope of variables in JavaScript? explains this distinction.

The next version of JavaScript will have let-scoped variables and the value stored in those would bee collectible at the end of a loop body run if declared inside the loop.

Neither will get garbage collected until the variables go out of scope. Scope in Javascript is introduced by functions. A loop construct has no influence on scope whatsoever.

As far as garbage collection, what the other answers say should be true, the browser handles the garbage collection and it doesn't matter if the variable is declared internally, or externally, to a loop.

As for efficiency, your code would be a little more optimized to declare the variable prior to the loop.

发布评论

评论列表(0)

  1. 暂无评论