有一件事情一直让我感到奇怪,尽管JavaScript嵌套回调的可读性很差,但在许多示例和教程中,我很少看到预定义的命名函数用作回调参数。我白天是一名Java程序员,虽然抛开关于企业级名称的刻板印象,但我喜欢使用有意义(尽管很长)的名称,在具备强大功能的IDE中工作,可以使代码的意图和含义更加清晰,而不会增加实际生产效率。那么为什么在编写JavaScript代码时不采用相同的方法呢?
想了一下,我能够想出支持和反对这个想法的论点,但是由于我的天真和对这门语言的新鲜感,我无法得出任何结论,也不知道在技术层面上这样做是否好。
优点:
- 灵活性。带有回调参数的异步函数可以通过许多不同的代码路径到达,如果为每个可能的边缘情况编写命名函数可能会很麻烦。
- 速度。这在黑客心态中非常重要。添加组件直到它起作用。
- 其他人都在使用它
- 更小的文件大小,即使微不足道,但在网络上每一位都很重要。
- 更简单的AST?我想匿名函数是在运行时生成的,所以JIT不会干扰将名称映射到指令,但这只是我的猜测。
- 更快的分派?对此我也不确定。再次猜测。
缺点:
- 它很丑陋且难以阅读
- 当您嵌套在回调的深渊中时,它会增加混乱(但公正地说,这可能意味着您一开始就编写了构造不良的代码,但这很常见)。
- 对于没有函数背景的人来说,理解它可能是一个奇怪的概念