gpt4 book ai didi

JavaScript 匿名函数

转载 作者:行者123 更新时间:2023-11-30 10:51:46 26 4
gpt4 key购买 nike

我有以下代码:

for (var i=0; i < 20; i++) {
var itemButton = $('<button />').click(function(){ alert('Hello'); }).append('Hello');
$('#container').append(itemButton);
}

我在这里创建了很多按钮,每个按钮都有一个 onclick 函数。然后我使用 $('#shopSearchTopBar').empty(); 清除#container 并再次创建按钮。

我的问题是:这是否可能是内存泄漏?当我在#container 上调用 .empty() 方法时,Javascript 是否会释放我第一次创建的那些匿名函数所使用的内存,或者内存被释放,我可以安全地添加这 20 个新按钮,每个按钮都有自己的新匿名函数?

最佳答案

这些函数存储在 jQuery.cache 中。

只要您使用像 .empty() 这样的 jQuery 方法,所有受影响的元素的数据都会被清除。

如果你做了这样的事情:

document.getElementById('container').innerHTML = '';

那么您可能会遇到非常严重的内存泄漏,因为每个元素与 jQuery.cache 之间的连接将被切断,并且数据(可能还有更多)将孤立地存放在缓存中。

在删除/覆盖内容时坚持使用 jQuery 方法,你会没事的。

即使这样做:

$('#container').html('');

...jQuery 将清理受影响元素的数据。

关于JavaScript 匿名函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4879686/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com