Вопрос направлен на людей, которые думали о стиле кода в контексте предстоящего ECMAScript 6 (Harmony) и которые уже работали с языком.
С () => {}
и function () {}
мы получаем два очень похожих способа записи функций в ES6. На других языках лямбда-функции часто отличает себя анонимным, но в ECMAScript любая функция может быть анонимной. Каждый из двух типов имеет уникальные области использования (а именно, когда this
необходимо либо явно привязать, либо явно не привязать). Между этими доменами существует огромное количество случаев, когда любая нотация будет выполняться.
Функции стрелок в ES6 имеют как минимум два ограничения:
- Не работает с
new
- Исправлено
this
, связанное с областью при инициализации
Эти два ограничения в стороне, функции стрелок теоретически могут заменить обычные функции почти в любом месте. Какой правильный подход использует их на практике? Если используются функции стрелок, например:
- "везде, где они работают", т.е. везде функция не должна быть агностической относительно переменной
this
, и мы не создаем объект. - только "везде, где они нужны", т.е. прослушиватели событий, тайм-ауты, которые должны быть привязаны к определенной области
- с "короткими" функциями, но не с "длинными" функциями
- только с функциями, которые не содержат другой функции стрелки
То, что я ищу, - это руководство по выбору соответствующей нотации функций в будущей версии ECMAScript. Руководство должно быть четким, чтобы его можно было обучать разработчиков в команде и быть последовательным, чтобы он не требовал постоянного рефакторинга от одной функции к другой.