-1

我想知道我是否通过将我从回调接收到的对象的引用分配给另一个变量来做一些危险的事情,是否有可能“丢失”这些数据?

一个非常简单的例子,发生在服务器端,来自套接字的回调:

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

在这里,我将变量的引用推User送到我的数组Users中,但我无法解释User在范围末尾变成原始变量的内容,那么,这是否危险?此引用是否有可能在下一次回调时更改?

当我从数据库获取模型,甚至将套接字本身存储到User变量中时,我也会这样做,但我真的想知道这是否不是一个大错误!

4

1 回答 1

0

这很好。只要还有东西在引用该User对象(在这种情况下是您的 Users 数组),那么它就不会被垃圾收集。

这通常是垃圾收集语言的工作方式。这是您看不到malloc等人的原因之一。在垃圾收集语言中——基本上所有的变量声明都是malloc'ed.

于 2013-11-08T02:04:13.917 回答