将回调函数设置为匿名和从名称之间的区别

时间:2016-02-15 13:10:56

标签: javascript jquery

我正在关注JavaScript中的主题内存泄漏one video,其中说明来自命名函数的回调在内存泄漏方面优于匿名函数。所以当我使用回调作为匿名vs命名时有什么区别。

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

$("#abc").click(somethingclick);

function somethingclick() {
    console.log("hello")
};

1 个答案:

答案 0 :(得分:3)

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

视频在发言人说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,但语法显然无效。