我想知道我是否通过将从回调接收的对象的引用分配给另一个变量来做一些危险的事情,是否可以“松散”这些数据?
一个非常简单的例子,它发生在服务器端,来自套接字的回调:
var Users [];
socket.on('receive-user', function(User) {
Users.push(User);
});
在这里,我将变量User
的引用推送到我的数组Users
中,但我无法解释在范围末尾的原始变量User
是什么,所以, 危险吗 ?这个引用是否有可能在下一次回调时发生变化?
当我从数据库获取模型时,我也这样做,甚至将套接字本身存储到User
变量中,但我真的想知道这不是一个大错误!
答案 0 :(得分:0)
这很好。只要还有引用User
对象的东西(在本例中是您的Users数组),它就不会被垃圾回收。
这通常是垃圾收集语言的工作原理。这是你没有看到malloc
等人的原因之一。在垃圾收集语言中 - 基本上所有变量声明都是malloc'ed
。