假设我有以下
myFunction
和setTimeout
的组合:function myFunction(){
var am_i_eaten = 'ffdfjdhsfhs';
setTimeout(function(){
console.log(am_i_eaten);
},3000);
}
myFunction();
< p >setTimeout函数会保留myFunction的作用域(因为它可以毫无问题地打印am_i_eaten),并防止在Node.JS环境中被垃圾回收。我相信这种行为与浏览器中的行为有些不同?< /p >
< p >谢谢!< /p >
eval
),在这种情况下,那个其他变量可能会被 GC 回收。不过不要依赖于“聪明”的部分,如果你担心,完成后将标识符设置为null
。 - Paul S.setTimeout
之后只需执行am_i_eaten = null
吗? - joshvar foo = ["some", "big", "memory", "hog"];
..在完成_foo_后,foo = null;
- Paul S.setTimeout
的第三个及以上参数被定义为回调函数的参数,但许多实现并不包括该功能(我不知道在node.js中是否有)。在某些时候,你需要问自己是否额外函数调用的开销值得更早的垃圾回收 :) - Paul S.