使回调函数为匿名和从名称之间的区别



我正在观看一个关于JavaScript中主题内存泄漏的视频,该视频说从命名函数的回调在内存泄漏方面比匿名函数更好。 那么当我使用回调作为匿名与命名时有什么区别。

$("#abc").click(function() {
    console.log("hello")
})

$("#abc").click(somethingclick);
function somethingclick() {
    console.log("hello")
};

这不是一个答案,而是一个更长的评论。

该视频在演讲者说try to avoid anonymous functions for events的地方具有误导性。

两者之间没有区别:

$("#abc").click(function() {
   console.log("hello")
});

$("#abc").click(somethingclick);
// no other code in between here
function somethingclick() {
   console.log("hello")
};

因为这两个函数具有相同的作用域,并且将保持相同的变量处于活动状态(在您的示例中,甚至没有任何变量保持活动状态(。

说话者想告诉你的是,你应该避免使用作用域来保持变量可用于回调,因为这会增加你保留在内存中不想保持活动状态的对象的可能性。

视频/幻灯片的其他部分也具有误导性,因为演讲者声称在幻灯片中使用了jQuery,但语法显然无效。

最新更新