题目描述:变量 a 会被 GC 吗,为什么
function test(){
var a = 1;
return function(){
eval("")
}
}
test();
答案:
不会
解析:
- 因为 eval 会七篇词法作用域
- 例如 function test(){eval("var a=1")},创建一个 a 变量,不确定 eval 是否对 a 进行了引用,所以为了保险,不对其进行优化。
- 相对,try catch,with 也不会被回收, with 会创建新的作用域