Комментарии 18
Капец, ни слова про this
const traditionalFunction = function(arg1, arg2) {
return arg1 + arg2;
};
Гнать за такое из профессии...
Проблема усугубляется, если не вы — разработчик этой мегабиблиотеки.
Вторая проблема, которую я вижу — очевидная сложность для компилятора, который должен каким-то образом упростить код и убрать из него многочисленные вложенные вызовы, потому что я полагаю, что такой код будет работать неэффективно без оптимизации.
В этом плане я не вижу большой выгоды между «функция, складывающая 2 числа» и просто выражением «a + b». Во втором случае понятно — что происходит и не возникает существенных накладных расходов.
Функцию, складывающую два числа, можно передавать как параметр в другую функцию, частично применять, типа делать из функции, складывающую два числа делать функцию, увеличивающую число на 1, 5 или 10. И все эти микрофункции комбинировать между собой для решения задачи. Другое дело, что частенько получается write only код, который даже в дебаггере сложно пройти.
А что если мне не нужна краткость? Браузеру абсолютно все равно использую я стрелочные функции или пишу код по старому, но этого де не скажешь про меня. Для меня, как и для многих важна читабельность / понятность кода и я не вижу ни одной причины тратить свое время на разгадку стрелочных ребусов.
Многие считают, что
[1,2,3,4].map(x => x *x)
более читаемое чем
[1,2,3,4].map (function (x) {
return x *x;
})
Функциональное программирование крутая штука, но в js наверняка все это плохо оптимизированно.
Опять же, стрелочные функции появились наверное больше из-за this, а не для того чтобы внедрять парадигму функционального программирования.
Функции высшего порядка давно были. Как и парадигма ФП давно внедрялась.
Что «давно были»? Прочитайте внимательно о чем написано в статье и подумайте на что именно я ответил.
Для чего на самом деле нужны стрелочные функции в JavaScript