“function foo(bar){}”与“foo = function(bar){}”

时间:2010-01-27 17:28:30

标签: javascript function variables

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

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

一方与另一方的好处是什么?我在后者中看到的主要好处是没有遇到已定义函数名的错误。但是,可能存在其他不明显的优点或缺点。它们是什么(如果有的话)?

2 个答案:

答案 0 :(得分:1)

这已被问过几次,this似乎是最好的。

答案 1 :(得分:1)

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

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

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

var a = (function() {

  var answer = 42;

  function display() { window.alert(answer); };

  return display;

})();

现在变量a包含一个显示变量answer的值的函数,但变量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对象作为$参数发送到作用域,这样,即使已关闭,作用域中的代码也可以使用$快捷方式(使用{ {1}})在范围之外。