何时使用匿名JavaScript函数?

3

我希望你能帮助翻译关于 JavaScript 匿名函数的使用时机。

请说明这些函数之间的区别,并解释在何种情况下应该使用它们。

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

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

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


不,它会创建一个带有“test1”内容的空div节点,并将其附加到“body”的末尾。PS:由于我在问题中错误地阅读了代码,因此删除了我的答案。 - zerkms
只是顺便提一下,appendappendTo更快:http://jsperf.com/html-vs-class - Levi Morrison
3个回答

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
你可以查看John Resig的JavaScript库的秘密,特别是第47页上关于JavaScript函数的部分。虽然比较冗长,但你会更深入地了解JavaScript。

1
您可以使用以下类似的功能(这是另一种类型的匿名函数),当您不想污染全局命名空间时使用:
(function() {
    var pollution = 'blablabla';

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接