代码之家  ›  专栏  ›  技术社区  ›  Matt Huggins

“函数foo(bar){}”与“foo=function(bar){}”[重复]

  •  1
  • Matt Huggins  · 技术社区  · 15 年前

    这个问题已经有了答案:

    function foo(bar) {
        // ...
    }
    

    foo = function(bar) {
        // ...
    };
    

    两者的好处是什么?我在后面的文章中看到的主要好处是,在已经定义了函数名的情况下,不会遇到错误。然而,可能还有其他的好处或缺点并不明显。它们是什么(如果有的话)?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Community Mohan Dere    8 年前

    有人问过几次, this 似乎是最好的。

        2
  •  1
  •   Guffa    15 年前

    除了将匿名函数分配给变量之外,还可以对其执行其他操作。例如,您可以立即执行它:

    (function() { ... })();
    

    这有时用于创建代码的作用域。作用域中声明的任何内容都是本地的,您可以将结果返回到外部代码:

    var a = (function() {
    
      var answer = 42;
    
      function display() { window.alert(answer); };
    
      return display;
    
    })();
    

    现在变量 a 包含显示变量值的函数 answer ,但变量 回答 在以下范围内是本地的:

    a(); // displays the value
    display(); // not available
    window.alert(answer); // not available
    

    例如,此模式用于为jquery创建插件:

    (function($) {
    
      $.fn.blackText = function() {
        return this.css('color', '#000');
      };
    
    }(jQuery);
    

    这个 jQuery 对象作为 $ 参数,这样作用域中的代码就可以使用 $ 即使已关闭快捷方式(使用 noConflict )超出范围。