@JS_Noob
Пишу плохой код профессионально

Когда не стоит использовать стрелочные функции?

Сейчас стало популярно писать функции с использованием функций-стрелок:
const someFunc = (...) => {... ...}
так вот когда этого не стоит делать?
Всегда ли стоит объявлять функции с помощью ключевого слова function, кроме тех случаев, когда нам надо получить контекст родительского окружения? Или всегда писать стрелки, если нам не надо работать с this?

P. S. Сам пишу всё стрелками, но вижу, что прогеры, которых я считаю на голову выше себя, пишут с ключевым словом function. Хочу разобраться и понять, что же лучше.
  • Вопрос задан
  • 313 просмотров
Решения вопроса 1
Aetae
@Aetae Куратор тега JavaScript
Тлен
function - кода тебе нужна функция.
arrow-function - когда тебе нужна лямбда, т.е., условно, коротенькая анонимная функция, объявляемая по месту использования.

Всё остальное в основном хипстерский хайп или мракобесие от непонимания как работать с контекстом.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 5
Xuxicheta
@Xuxicheta
инженер
ок
el.addEventListener('click', (evt) => {
  console.log(evt)
})


не ок
el.addEventListener('click', function (evt) {
  console.log(evt)
})


ок
function mySuperFunc(evt) {
  // еще десяток строк
  console.log(evt)
}


не ок
const mySuperFunc = (evt) =>  {
  // еще десяток строк
  console.log(evt)
}


ок
const mySuperFunc = (evt) => evt.target;

не ок
function mySuperFunc(evt) {
  return evt.target;
}


в целом как-то так. Это не догма, просто так лучше читается. Ну и конечно в случаях с действиями с this, там все однозначно, где лямбда, а где нет.
Ответ написан
like-a-boss
@like-a-boss
Признайся,тебяТянетНаКодМужика,ты—программный гей
Всегда. Они создают слишком много вопросов на тостере.
Ответ написан
profesor08
@profesor08 Куратор тега JavaScript
Хочешь надежный код, пиши
const func = () => {}; // 
const func = function() {} // если не нужен контекст


Хочешь НЕ надежный код, пиши
function func() {}
Ответ написан
Комментировать
@M-ka
frontend присматривающийся к ror
Когда нужен ИЕ версии без поддержки таковых или моб устройства с не оч свежими версиями браузеров... Ну или не засорять проект разными стилями конструкций.
Ответ написан
@AleksRap
Например Когда хотите объявить функции в конце кода, а использовать до объявления. Функциональное выражение в таком случае не подойдёт
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы