开发者

Do local variables inside of a loop get garbage collected?

开发者 https://www.devze.com 2023-04-11 22:00 出处:网络
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?

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开发者_StackOverflow中文版; 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.


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 become 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

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号