【问题标题】:Why are anonymous functions used? [duplicate]为什么要使用匿名函数? [复制]
【发布时间】:2012-10-27 19:54:43
【问题描述】:

可能重复:
What are the benefits to using anonymous functions instead of named functions for callbacks and paramaters in JavaScript event code?

我一直在阅读/编写一些基本的 Javascript 和 JQuery 代码,并注意到在我阅读的几乎每个教程中,都使用匿名函数而不是命名函数。

例如:

$('document').ready(function(){
    alert("I am ready.");
});

对比:

function ready(){
    alert("I am ready.");
}

$('document').ready(ready());

第二个例子不是更容易阅读/理解吗?现在,我意识到这些都是非常简单的示例,但我想要说明的是,我觉得匿名函数使代码看起来混乱且难以理解。到处都有大括号和括号,因为它是匿名的,所以您不能在其他任何地方使用该函数。

功能的全部意义不在于能够将您的代码组织成不同的模块以使您的代码看起来更干净、更容易调试并避免冗余代码吗?

为什么有人会使用匿名函数而不是命名函数?它们的用途是什么?

【问题讨论】:

标签: javascript jquery anonymous-function


【解决方案1】:

匿名函数的意义在于您只使用它们一次,而不必在其他地方定义它们(以便重用)。它很简洁,因为它们就在要使用的地方(在特定的上下文中)。

您可以选择使用它们。如果你不喜欢他们..不要!

【讨论】:

  • 是的,因为它们只使用一次,所以匿名化它们是有意义的,但是,我强烈反对它使代码整洁。相反,它使阅读变得异常困难。
【解决方案2】:

因为如果您不需要/想要该名称,那么将变量环境与未使用的名称混为一谈是没有意义的。


仅供参考,这个:

$('document').ready(ready());

应该是这样的:

$('document').ready(ready);

...除非你改变你的函数,使它返回一个函数。

function ready() {
    return function() {
        alert("I am ready.");
    }
}

但是正如你在这里看到的,我再次使用了一个匿名函数,因为它在它的变量环境中没有其他用途,除了作为返回值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-07
    • 2011-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-08
    相关资源
    最近更新 更多