function foo(bar) {
// ...
}
和
foo = function(bar) {
// ...
};
一方与另一方的好处是什么?我在后者中看到的主要好处是没有遇到已定义函数名的错误。但是,可能存在其他不明显的优点或缺点。它们是什么(如果有的话)?
答案 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}})在范围之外。