何时应使用JavaScript匿名函数而不是传统命名函数?

4

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

我已经阅读了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());

2
不要忘记,你也可以像这样使用 var get2 = function get2() { return 'Goodby'; };,这对于调试非常有用。 - Andy
当它使您的代码更易读时。 - Benjamin Gruenbaum
@BenjaminGruenbaum。阿尔玛的重复帖子似乎是在说“除非这样会使你的代码难以阅读,否则始终使用它们”。 - user1032531
这完全是关于风格的问题,而且非常主观。 - srquinn
@user1032531,这和我说的一样。在使你的代码易读时使用它们。 - Benjamin Gruenbaum
可能是 https://dev59.com/s3RC5IYBdhLWcg3wUvQS 的重复问题。 - Nate
2个回答

0
不需要为匿名函数设置名称只是一种方便,因为在大多数情况下,函数的名称并不重要。大多数情况下,匿名函数和命名函数都可以完美地完成任何工作。
查看这篇好文章:这里

0

在模块内,我发现将任何内部定义的实用函数(例如function logfoofunction logbar)放置在返回语句下方更易读,并且依赖于它们被提升以便我可以在返回语句之上/之内使用它们。

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

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

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

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

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