私はこのコードがメモリリークの原因となるかもしれないと思う: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');
ありがとうございます!
ありがとうございます!私は、 "ラベル/ポインタ"の意味を理解し始めたと思う...データアドレスの "参照"だけで、 "参照"がどこにポインタされているかを無視する...第1と第2のバー関数呼び出しは同じ最初のパラメータの "ポインタ"。再度、感謝します!!! –