我已经开始更多地使用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);
}
我意识到(我认为)在如此紧凑的情况下会有某种美感,这可能不是一个好主意,就像你在双循环中不需要大量代码一样。
答案 0 :(得分:1)
匿名功能的清洁程度取决于他们正在做什么以及他们有多长时间。
我倾向于尽可能只使用简单的匿名函数,只需调用外部定义的函数(在代码块或其他文件中定义...),当调用函数为long / complex时将其内联到匿名函数中。
这将使代码在函数很长的情况下更易读/可读。 如果在多个地方使用函数,也会变得更有用 - 否则函数只会在任何地方重复使用
答案 1 :(得分:1)
我认为这取决于您的目标和申请。 您必须考虑代码的可重用性和可维护性。
如果您再也不想使用匿名功能 - 请按照惯例使用它, 但如果你想重新使用tu,你的代码就会成为一个全局函数。
如果您的函数调用不是匿名的,则可维护性更容易提供。
调试有时也更容易(错误消息:函数{}中的错误没有多大帮助。)
答案 2 :(得分:1)
与任何工具一样,它取决于。你不应该总是使用它,也不应该使用它。你应该在适当的地方使用它。
你应该在简单的2或3线上使用它们,并且没有在其他地方使用它的应用程序。
你应该在JavaScript中使用它,你可以获得一个闭包来隔离交易中的变量。
最重要的是,只要另一个开发人员可以查看代码并“获取它”,就可以了。当我查看上面的代码示例时,我不“得到它。”