-1

コールバックから受け取ったオブジェクトの参照を別の変数に割り当てることで何か危険なことをしているのだろうかと思っていますが、このデータを「失う」ことは可能ですか?

ソケットのコールバックから、サーバー側で発生する非常に単純な例:

var Users [];
socket.on('receive-user', function(User) {
  Users.push(User);
});

Userここで、変数の参照を自分の配列にプッシュしますが、スコープの最後でUsers元の変数がどうなるか説明できなかったUserので、危険ですか? この参照が次のコールバックで変更される可能性はありますか?

データベースのフェッチからモデルを取得するとき、またはソケット自体を変数に格納するときにもこれを行いますがUser、それが大きな間違いではないかどうか本当に疑問に思っています!

4

1 に答える 1

0

これはまったく問題ありません。オブジェクト (この場合は Users 配列) を参照している何かがある限り、Userガベージ コレクションは行われません。

これは通常、ガベージ コレクション言語のしくみです。あなたが見ていない理由の1つはどれですかmalloc。ガベージ コレクション言語では、基本的にすべての変数宣言はmalloc'ed.

于 2013-11-08T02:04:13.917 に答える