何时使用匿名JavaScript函数?

时间:2011-06-03 04:46:02

标签: javascript jquery

我正在尝试了解何时使用匿名JavaScript函数。

功能之间的状态差异?解释何时使用每个。

var test1 = function(){
    $("<div />").html("test1").appendTo(body)
};

function test2() {
    $("<div />").html("test2").appendTo(body)
}

我认为答案是使用匿名函数而另一个不替换空div元素。这看起来是对的吗?

3 个答案:

答案 0 :(得分:6)

在你的例子中,它确实没有太大的区别。唯一的区别是,使用function foo() { }声明的函数可以随时在同一范围中的任何位置访问,而使用var foo = function () { }声明的函数只能在之后访问 >执行分配的代码已经运行。

foo(); // ok
function foo() { ... };

bar(); // error, bar is not a function
var bar = function () { ... };
bar(); // ok

在不需要命名函数或构建对象的情况下,通常使用匿名函数:

arr.sort(function (a, b) { return a - b; });  // anonymous callback function

function MyObject() {
    this.foo = function () { ... }  // object constructor
}

答案 1 :(得分:1)

当您不想污染全局命名空间时,您将使用类似下面的函数(这是另一种类型的匿名函数):

(function() {
    var pollution = 'blablabla';

    function stinky() {
        // Some code
    }
})();

答案 2 :(得分:1)

您可以查看John Resig的Secrets of JavaScript Libraries,尤其是第47页的JavaScript函数。相当冗长,但您将了解有关JavaScript的更多信息