Javascript &引用;函数foo(bar){}";对;foo=函数(bar){}";
及Javascript &引用;函数foo(bar){}";对;foo=函数(bar){}";,javascript,function,variables,Javascript,Function,Variables,及 一个和另一个的好处是什么?我在后者中看到的主要好处是,在已经定义函数名的情况下,不会出现错误。然而,可能还有其他不明显的优点或缺点。它们是什么(如果有的话)?这已经被问了好几次了,似乎是最好的一个。除了将匿名函数赋值给变量之外,您还可以对匿名函数执行其他操作。例如,您可以立即执行它: foo = function(bar) { // ... }; 这有时用于创建代码的作用域。作用域中声明的任何内容都是局部的,您可以将结果返回到外部代码: (function() { ... })()
一个和另一个的好处是什么?我在后者中看到的主要好处是,在已经定义函数名的情况下,不会出现错误。然而,可能还有其他不明显的优点或缺点。它们是什么(如果有的话)?这已经被问了好几次了,似乎是最好的一个。除了将匿名函数赋值给变量之外,您还可以对匿名函数执行其他操作。例如,您可以立即执行它:
foo = function(bar) {
// ...
};
这有时用于创建代码的作用域。作用域中声明的任何内容都是局部的,您可以将结果返回到外部代码:
(function() { ... })();
现在变量a
包含一个显示变量answer
值的函数,但是变量answer
是作用域的局部变量:
var a = (function() {
var answer = 42;
function display() { window.alert(answer); };
return display;
})();
例如,此模式用于为jQuery创建插件:
a(); // displays the value
display(); // not available
window.alert(answer); // not available
jQuery
对象作为$
参数发送到作用域中,这样作用域中的代码就可以使用$
快捷方式,即使它已在作用域外关闭(使用noConflict
)
a(); // displays the value
display(); // not available
window.alert(answer); // not available
(function($) {
$.fn.blackText = function() {
return this.css('color', '#000');
};
}(jQuery);