1

这是我的代码:

// array of image data
var images = [
   {
      url: 'image.jpg'
   }
];

// function that loads image
var loadImage = function(imageObject) {
    imageObject.img = $('<img src="'+imageObject.url+'"/>').error(function() {
       // error event handler, that might not always fire
       imageObject.img.remove();
       imageObject.notLoaded = true;
    });
};

loadImage(images[0]);

我的问题是如何清理图像数组?如果我分配 images = null;,这会清理所有图像的内存吗?我应该取消绑定“错误”处理程序吗?

谢谢!

4

2 回答 2

2

与 C/C++(和其他)不同,JavaScript 负责内存管理和垃圾收集。当然,删除不必要的数据会释放浏览器/服务器使用的一些资源,并且可能会稍微提高整体性能,但这不是强制性的,如果您忘记它也不会发生内存泄漏。

要清理数组,您可以设置images.length = 0. images将是一个空数组[]

于 2013-02-22T08:38:41.977 回答
0

我参加聚会可能为时已晚,但我自己偶然发现了这个问题。@oleq 的回复是正确的,但前提是这是 Vanilla JS。

jQuery 1.x 将所有事件保存在jQuery.cache对象中,因此您需要取消绑定它以将其从那里移除。

于 2014-11-08T08:05:48.473 回答