Jquery 匿名函数是否比调用函数更有效?

Jquery 匿名函数是否比调用函数更有效?,jquery,Jquery,我刚刚开始学习jQuery。我更像是一个html+css网页设计师,所以你可能知道函数需要一点适应,尤其是匿名函数 那么,如果 $('p.expander').toggle( function() { $(this).prev().addClass('open'); }, function() { $(this).prev().removeClass('open'); } ); 然后说 function toggle1 () { $(this).pre

我刚刚开始学习jQuery。我更像是一个html+css网页设计师,所以你可能知道函数需要一点适应,尤其是匿名函数

那么,如果

$('p.expander').toggle(
   function() {
    $(this).prev().addClass('open');
   },
   function() {
    $(this).prev().removeClass('open');
  }
);
然后说

 function toggle1 () {  $(this).prev().addClass('open');}
 function toggle2 () {  $(this).prev().removeClass('open');}
 $('p.expander').toggle(toggle1, toggle2); 
如果只使用一次,是否使用匿名函数?如果要多次使用函数,应该调用它吗


正如标题所说,一个比另一个更有效率吗?因为似乎99%的文章都使用匿名文章。我发现有时很难阅读代码,因为我忘记了分号或括号的含义

名字,这就是区别。两者在运行时是等效的。只是如果你定义了一个匿名函数,你就不能在其他地方重用它。在不打算重用此代码的情况下,它非常有用。如果要重用命名函数,请使用该函数

下面是一个可以在多个位置重用命名函数的示例:

$('p.expander').toggle(toggle1, toggle2); 
$.post('/foo/bar', toggle1);
$('a.foo').click(toggle2);

匿名函数和非匿名函数之间没有性能差异。
如果只调用函数一次,则不必调用函数名


如果要调用同一函数两次或两次以上,则必须命名该函数。

在这种特定情况下,没有区别。但请考虑:

$(document).ready( function(){

    var a, b, c,
        d, e, f,
        g, h, i;


    $('p.expander').toggle(
       function() {
        $(this).prev().addClass('open');
       },
       function() {
        $(this).prev().removeClass('open');
      }
    );
});
vs


在这种情况下,匿名函数包含更大的环境(使用更多内存),因为它们知道
a、b、c、d、e、f、g、e、h、i
,除非浏览器对其进行优化。

这很有趣。在下面的例子中,他们不知道变量a-i?为什么上面的例子用得更多?它如何拥有一个更大的环境…?@Ali不,它们没有,因为它们被声明在范围之外。尽管你很难找到一个不优化它的浏览器。
function toggle1 {  $(this).prev().addClass('open');}
function toggle2 {  $(this).prev().removeClass('open');}

$(document).ready( function(){

    var a, b, c,
        d, e, f,
        g, h, i;


    $('p.expander').toggle( toggle1, toggle2 );
});