1 回答

TA貢獻1942條經(jīng)驗 獲得超3個贊
未被閉包引用的變量將被回收,可以用console.dir()打印出函數(shù)的屬性,來查看它[[scope]]:
function fn1(){
var a=10
var b=20
var c=30
function fn2(){
alert(a++)
}
return fn2
}
console.dir(fn1())
將會得到 fn1 只保留了變量a,變量bc被回收了。
[[Scopes]]: Scopes[2]
0: Closure (fn1)
a: 10
1: Global
如果再添加一個閉包:
var fn4
function fn1(){
var a=10
var b=20
var c=30
function fn2(){
alert(a++)
}
fn4 = function () {
alert(b++)
}
return fn2
}
console.dir(fn1())
console.dir(fn4)
可以看到,變量a、b被閉包引用,沒有被回收,只有c被回收了
[[Scopes]]: Scopes[2]
0: Closure (fn1)
a: 10
b: 20
1: Global
添加回答
舉報