1
我覺得這段代碼可能會導致內存泄漏:在Javascript中可以綁定函數導致內存泄漏?
function foo(arr, value){
arr.push(value);
console.log(arr);
}
var bar = foo.bind(null, []);
bar('first call');//output: ['first call']
//The next thing that confused me is happened,
//'first call' has been hold in 'arr' after bar('first call') execute:
bar('second call');//output: ['first call', 'second call'];
我想知道爲什麼GC不是第一功能之後的第一個函數的參數的參考集合已被執行?
我以爲每次執行bar
函數時,形式參數arr
都應該初始化爲[]
。
arr/[]
與變量arr2
之間的區別是什麼?
var arr2 = [];
function foo2(value){
arr2.push(value);
console.log(arr2);
}
var bar2 = foo2.bind(null);
bar2('first call 2');
bar2('second call 2');
在此先感謝!
非常感謝!我想我開始明白「標籤/指針」的含義......它只是數據地址的「參考」,忽略「參考」指向的位置......第一個和第二個條形函數調用具有相同的第一個參數的「指針」。再次感謝!!! –