【问题标题】:When should JavaScript anonymous functions be used instead of traditional named functions [duplicate]何时应使用 JavaScript 匿名函数而不是传统的命名函数 [重复]
【发布时间】:2014-02-11 15:53:55
【问题描述】:

对于我下面的示例代码,使用传统的命名函数和匿名函数执行相同的任务。

我已阅读 var functionName = function() {} vs function functionName() {},并了解第一个命名函数是如何在运行时定义的,而第二个匿名函数是在解析时为脚本块定义的。

我的问题具体是什么条件会使一种方法比另一种方法更适合?

function get1() {
    return 'Hello';
};

function alert1(data) {
    alert(data);
};

var get2 = function() {
    return 'Goodby';
};

var alert2 = function(data) {
    alert(data);
};


alert1(get1());

alert2(get2());

【问题讨论】:

  • 别忘了你也可以有 var get2 = function get2() { return 'Goodby'; }; 这样的东西,这对调试很有用。
  • 当它使您的代码更具可读性时。
  • @BenjaminGruenbaum。 Alma 的重复帖子似乎在说“总是使用它们,除非它使您的代码可读性降低”
  • 这完全是关于风格和完全主观的
  • @user1032531 这和我说的一样。当它使您的代码可读时使用它们。

标签: javascript


【解决方案1】:

在模块内部,我发现将定义的任何内部实用函数(例如 function logfoofunction logbar 下面放在 return 语句中,然后依赖它们被提升以便于我可以在 return 语句的上方/内部使用它们。

var myModule = (function() {
    return {
        foo:  function() {
            logfoo();
        },

        bar: function() {
            logbar();
        }
    }

    function logfoo() {
        console.log('foo');
    }

    function logbar() {
        console.log('bar');
    }
})();

【讨论】:

    【解决方案2】:

    不必为匿名函数设置名称只是一个 方便的事情,因为在大多数情况下,函数的名称并不 真的很重要。大多数时候匿名函数和命名 函数都可以很好地完成任何工作。

    查看这篇好文章:HERE

    【讨论】:

      猜你喜欢
      • 2013-11-22
      • 1970-01-01
      • 2012-02-23
      • 2015-02-19
      • 2013-08-29
      • 1970-01-01
      • 1970-01-01
      • 2022-11-10
      • 1970-01-01
      相关资源
      最近更新 更多