循环内的局部变量是否被垃圾收集?

Geo*_*ess 1 javascript performance garbage-collection

我想知道在循环之外放置在循环中引用的任何变量是否更有效 - 或者它们是否可以像函数中的变量一样收集垃圾?

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

要么

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

我试图在我的浏览器的分析器中运行一些内存测试,但仍然无法分辨哪种方法更好.

Mik*_*uel 6

var是功能范围,没有阻止范围,所以它们是否出现在循环内并不重要. JavaScript中的变量范围是什么?解释了这种区别.

下一版本的JavaScript将具有let-scoped变量,如果在循环内部声明,则存储在这些变量中的值将在循环体运行结束时变得可收集.