我正在关注JavaScript中的主题内存泄漏one video,其中说明来自命名函数的回调在内存泄漏方面优于匿名函数。所以当我使用回调作为匿名vs命名时有什么区别。
$("#abc").click(function() {
console.log("hello")
})
和
$("#abc").click(somethingclick);
function somethingclick() {
console.log("hello")
};
答案 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,但语法显然无效。