Каковы преимущества использования анонимных функций вместо именованных для обратных вызовов и параметров в коде событий JavaScript?

Я новичок -к JavaScript. Я понимаю многие концепции языка, я читал о модели наследования прототипов, и я обостряю свой свист все более и более интерактивными начальными -вещами. Это интересный язык, но меня всегда немного отталкивают спагетти обратного вызова, которые типичны для многих -нетривиальных моделей взаимодействия.

Что-то, что всегда казалось мне странным, заключается в том, что, несмотря на кошмар читабельности, который представляет собой гнездо вложенных обратных вызовов JavaScript, есть одна вещь, которую я очень редко вижу во многих примерах и руководствах, — это использование предопределенных именованных функций в качестве обратных вызовов. аргументы. Я программист Java днем,и отказ от стереотипных колкостей по поводу Enterprise -y названий единиц кода одна из вещей, которые мне понравились в работе на языке с большим выбором многофункциональных IDE, заключается в том, что использование осмысленного, если Длинные имена могут сделать назначение и значение кода более ясным, не усложняя его фактическую продуктивность. Так почему бы не использовать тот же подход при написании кода JavaScript?

Поразмыслив над этим, я могу привести аргументы как за, так и против этой идеи, но моя наивность и новизна языка мешают мне делать какие-либо выводы относительно того, почему это было бы хорошо на техническом уровне.

Плюсы:

  • Гибкость. Асинхронная функция с параметром обратного вызова может быть достигнута одним из многих различных путей кода, и ее может утомить необходимость писать именованную функцию для учета каждого возможного пограничного случая.
  • Скорость. Это сильно влияет на хакерский менталитет. Прикрутите к нему вещи, пока он не заработает.
  • Все остальные делают это.
  • Меньшие размеры файлов, пусть даже тривиальные, но в сети важен каждый бит.
  • Проще AST? Я бы предположил, что анонимные функции генерируются во время выполнения, поэтому JIT не будет возиться с сопоставлением имени с инструкциями, но на данный момент я просто предполагаю.
  • Более быстрая отправка? Насчет этого тоже не уверен. Опять угадаю.

Минусы:

  • Это ужасно и нечитаемо
  • Это усугубляет путаницу, когда вы глубоко запутались в болоте обратных вызовов (что, если честно, вероятно, означает, что вы пишете плохо сконструированный код для начнем с, но это довольно распространено ).
  • Для тех, у кого нет функционального опыта, может показаться странной концепция grok.

С таким количеством современных браузеров, которые демонстрируют способность выполнять код JavaScript намного быстрее, чем раньше, я не вижу, как какой-либо тривиальный вид повышения производительности можно было бы выйти, используя анонимные обратные вызовы, было бы необходимостью. Кажется, что,если вы находитесь в ситуации, когда использование именованной функции осуществимо (предсказуемое поведение и путь выполнения ), тогда не будет причин не делать этого.

Итак, есть ли какие-то технические причины или ошибки, о которых я не знаю, которые делают эту практику настолько распространенной по какой-то причине?

44
задан Cœur 31 December 2016 в 18:15
поделиться