gpt4 book ai didi

javascript - 用作 Jquery 回调时匿名函数与命名函数的内存开销

转载 作者:数据小太阳 更新时间:2023-10-29 05:23:09 29 4
gpt4 key购买 nike

我正在学习 JS/JQuery 以及匿名函数和闭包。我见过这样的例子:

$('.button').click(function(){
/* Animations */
/* Other Stuff */
});

如果按钮不止一个,那岂不是效率低下?这不就是在内存中存储匿名函数原型(prototype)的相似副本吗? (纠正我的术语)这样做不是更好吗:

function handleClick(){
/* Animations */
/* Other Stuff */
}

('.button').click(handleClick);

甚至这样,如果需要对按钮的引用:

function handleClick($obj){
/* Animations */
/* Other Stuff */
}
//multiple anon functions again, but they all reference ONE handleClick function
('.button').click((function($obj){
return function(){handleClick($obj)};
})($(this));

最佳答案

当你使用命名函数时,它只存在于一个全局闭包中,但是如果你在运行时定义函数,它们是在(父函数的闭包)一个新的闭包中创建的,导致父变量在之后被保留,即使你这样做不再需要那个功能了。

简而言之,仅当您需要访问位于父函数中的变量时才尝试使用匿名函数。匿名函数几乎总是比命名函数更昂贵。但是在全局闭包中定义的命名函数会污染全局命名空间,自己决定。

关于javascript - 用作 Jquery 回调时匿名函数与命名函数的内存开销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18656718/

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