Pull to refresh

Comments 18

Очень смешно, конечно, утверждать, что на самом деле стрелочные функции нужны для сокращения кода путём исключения слов function и return. У этого способа описания функций и функциональные особенности имеются.

Это же альтернатива ООП! Какой this?!))

Обычное. Прототипное программирование — это тоже ООП.

UFO just landed and posted this here
const traditionalFunction = function(arg1, arg2) {
  return arg1 + arg2;
};

Гнать за такое из профессии...

Если разбивать код на множество мелких предельно простых функций, то возникает проблема систематизации и каталогизации этих функций. Проще говоря, если у вас 100 функций для проверки содержимого строки, то вспомнить и найти, как называется именно та, которая вам нужна, сложнее, чем написать её заново. Даже если у вас крутое IDE, читающее мысли.

Проблема усугубляется, если не вы — разработчик этой мегабиблиотеки.

Вторая проблема, которую я вижу — очевидная сложность для компилятора, который должен каким-то образом упростить код и убрать из него многочисленные вложенные вызовы, потому что я полагаю, что такой код будет работать неэффективно без оптимизации.

В этом плане я не вижу большой выгоды между «функция, складывающая 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;
})

Поддерживаю, тоже не нравятся мне эти стрелки, пока поймешь че написано.

тут дело в нравится или нет, а нужен ли вам контекст this в данном коде.

вы можете делать так

[1,2,3,4].map ((x) => {

return x * x;

});

По-моему, лучше было перевести как «Функции высшего порядка», то есть в более распространенную терминологию уложить.
Функциональное программирование крутая штука, но в js наверняка все это плохо оптимизированно.
Опять же, стрелочные функции появились наверное больше из-за this, а не для того чтобы внедрять парадигму функционального программирования.

Функции высшего порядка давно были. Как и парадигма ФП давно внедрялась.

Она как бы не то что давно внедрялась. Ходит легенда, довольно логичная, что создатели изначально задумали JS для функционального программирования. Но что-то не совсем по плану пошло(если он вообще был дальше, кроме «сделаем, а потом будь что будет»). Что не удивительно.
Что «давно были»? Прочитайте внимательно о чем написано в статье и подумайте на что именно я ответил.
Sign up to leave a comment.

Articles