使用匿名函数最简洁的方法是什么?

时间:2010-05-21 14:55:59

标签: lambda

我已经开始更多地使用Javascript了,因此我写的东西很复杂,组织正在成为一个问题。但是,此问题适用于允许您嵌套函数的任何语言。基本上,什么时候应该在命名的全局或内部函数上使用匿名函数?

起初我认为这是有史以来最酷的功能,但我想我会过火了。这是我最近写的一个例子,省略了所有的变量和条件,以便你可以看到结构。

function printStream() {
  return fold(function (elem, acc) {
    ...
    var comments = (function () {
      return fold(function (comment, out) {
        ...
        return out + ...;
      }, '', elem.comments);
    return acc + ... + comments;
  }, '', data.stream);
}

我意识到(我认为)在如此紧凑的情况下会有某种美感,这可能不是一个好主意,就像你在双循环中不需要大量代码一样。

3 个答案:

答案 0 :(得分:1)

匿名功能的清洁程度取决于他们正在做什么以及他们有多长时间。

我倾向于尽可能只使用简单的匿名函数,只需调用外部定义的函数(在代码块或其他文件中定义...),当调用函数为long / complex时将其内联到匿名函数中。

这将使代码在函数很长的情况下更易读/可读。 如果在多个地方使用函数,也会变得更有用 - 否则函数只会在任何地方重复使用

答案 1 :(得分:1)

我认为这取决于您的目标和申请。 您必须考虑代码的可重用性和可维护性。

如果您再也不想使用匿名功能 - 请按照惯例使用它, 但如果你想重新使用tu,你的代码就会成为一个全局函数。

如果您的函数调用不是匿名的,则可维护性更容易提供。

调试有时也更容易(错误消息:函数{}中的错误没有多大帮助。)

答案 2 :(得分:1)

与任何工具一样,它取决于。你不应该总是使用它,也不应该使用它。你应该在适当的地方使用它。

你应该在简单的2或3线上使用它们,并且没有在其他地方使用它的应用程序。

你应该在JavaScript中使用它,你可以获得一个闭包来隔离交易中的变量。

最重要的是,只要另一个开发人员可以查看代码并“获取它”,就可以了。当我查看上面的代码示例时,我“得到它。”