Я новичок в JavaScript. Я понимаю многие концепции языка, я читал модель прототипа наследования, и я разгоняю свой свист с более и более интерактивным интерфейсом. Это интересный язык, но меня всегда немного отключает спагетти обратного вызова, что характерно для многих нетривиальных моделей взаимодействия.
Что-то, что всегда казалось мне странным, заключается в том, что, несмотря на кошмар читаемости, который является гнездом JavaScript-вложенных обратных вызовов, одна вещь, которую я очень редко вижу во многих примерах и учебниках, - это использование предопределенных названных функций как обратного вызова аргументы. Я программист на Java, и отбрасывает стереотипные удары о именах Enterprise-y для единиц кода, одна из вещей, которые я пришла чтобы наслаждаться работой на языке с сильным выбором функциональной среды IDE, заключается в том, что использование значимых, если долгое, имен может сделать смысл и смысл кода более понятным, не делая его более сложным, чтобы быть действительно продуктивным. Так почему бы не использовать тот же подход при написании кода JavaScript?
Подумав, я могу придумать аргументы, которые предназначены для этой идеи и против нее, но моя наивность и новизна к языку не позволяют мне сделать какие-либо выводы относительно того, почему это было бы хорошо на техническом уровне.
Плюсы:
- Гибкость. Асинхронная функция с параметром обратного вызова может быть достигнута одним из многих различных путей кода, и ее можно было бы использовать, чтобы написать именованную функцию для учета всех возможных возможных случаев.
- Скорость. Он сильно влияет на хакерский менталитет. Задвиньте вещи до этого, пока это не сработает.
- Все остальные делают это
- Меньшие размеры файлов, даже если они тривиально, но каждый бит подсчитывается в Интернете.
- Упрощенный АСТ? Я бы предположил, что анонимные функции генерируются во время выполнения, поэтому JIT не будет гадать с сопоставлением имени с инструкциями, но я просто догадываюсь об этом.
- Быстрая отправка? Не уверен в этом. Угадайте еще раз.
Минусы:
- Это отвратительный и нечитаемый
- Это добавляет путаницу, когда вы вложенные орехи глубоко в болоте обратных вызовов (что, если быть справедливым, вероятно, означает, что вы начинаете писать плохо сконструированный код, но это довольно часто).
- Для кого-то, у кого нет функционального фона, это может быть причудливая концепция grok.
С таким большим количеством современных браузеров, которые демонстрируют возможность выполнения JavaScript-кода намного быстрее, чем раньше, я не вижу, как будет возникать какая-либо тривиальная производительность, которую можно получить, используя анонимные обратные вызовы. Кажется, что если вы находитесь в ситуации, когда использование именованной функции является выполнимой (предсказуемое поведение и путь выполнения), тогда не было бы причин не делать этого.
Итак, есть ли какие-либо технические причины или ошибки, о которых я не знаю, делает эту практику настолько обыденной по какой-либо причине?