snatvb
Ник и шортнэцм
snatvb
Ну да
Я помню шо ты забанен)
Oleg
Но когда надо - тогда надо
snatvb
Типа ...args достаточно?
Дима
snatvb
Какой категоричный)
Oleg
В целом же да, аргументс заменил рест, а другие внутренние свойства сильно специфичны чтобы юзать их постоянно.
Oleg
Возможно придет день когда аргументс забудут вообще
Oleg
Появится отвязка контекста для стрелочных функций какая-нибудь
Oleg
И function будет потерян
Дима
Ну знаешь
Дима
Там где нужен контекст, можно стрелочные функции не использовать)
Дима
И, сюрприз, слова function там всё равно не будет))
Oleg
Не совсем понял про что ты
Oleg
Ибо как раз стрелочные про контекст
Oleg
А просто функции - без
Дима
Дима
Если не заниматься вжух магией с созданием функций с this отдельно ото всего, то кейсов остаётся довольно мало)
Дима
Но это я уже ёрничаю)
Дима
Всё равно генераторы ()* => {} дропнули и function* точно с нами надолго)
Oleg
Сегодня про это строку в описании кофескрипта видел
Дима
Мои соболезнования))
Oleg
:D
Oleg
В целом создатели языка видимо видят смысл в олдскульном function
Дима
Ну да
Дима
Но всё равно, вот за это например я им благодарен))
Oleg
А ещё я давно не видел function declaration, всё либо переменные, либо методы, либо анонимные.
Дима
Иногда анонимной функции требуется имя для отладки понимания происходящего
Дима
Иногда (пару раз требовалось)
Oleg
Не, я про function x () {}
Oleg
А анонимная это неймед функутион экспрешшн
Oleg
Она не инициализируется при первом проходе интерпретатора
Oleg
А вот фанкшн декларейшн да
Oleg
И удобно что можно юзать до места объявления
Oleg
Но с классами оно теперь не актуально
Oleg
ООПризация языка происходит
Oleg
this то раньше был как бонус, можно было и без него, тем более с ним это прототипное наслиедование со 100500 букв и всем таким
Дима
Oleg
Нет
Oleg
a();
var a = function () {}
Oleg
a();
function a () {}
Oleg
Первое упадет, второе нет
Oleg
a();
var a = function a () {}
Oleg
Так тоже упадет, но думаю очевидно
Дима
Ну это только в корне модуля действует)
Oleg
Ну функция в декларейшн виде ведет себя как var переменная, замыканием забирается
Oleg
Но это олдскул всё, да
Oleg
😄
Oleg
Теперь ты просто делаешь класс и просто юзаешь через this всё что тебе нужно
andrei
или не делаешь)
Oleg
И пишешь в функциональном стиле, да
Oleg
Вот там фанкшн декларейшн может пригодится, да
Andrew
Oleg
Ну классический пример - сверху у тебя твоя логика, а снизу - функции что юзаются
Oleg
По логике что сверху уже ясно что происходит, но если нужны детали - смотришь вниз
Дима
Логика у тебя наверняка в других функциях
Дима
Поэтому пофигу ваще)
Oleg
Ну так вот в том то и прикол
Oleg
Если в одной плоскости всё - удобно когда у тебя в начале логика, а ниже уже нюансы
Oleg
Впрочем никто не мешает и в начале их писать
Oleg
Просто в отличие от анонимных функций - они инициализируются в первом прогоне интерпретатора. Во втором прогоне происходит процесс исполнения уже
Oleg
И в процессе исполнения они уже инициализированы все
Дима
Чёт всё равно не понял, при чём тут declaration)
Oleg
Название такое
Дима
Я не про это
Дима
Если у меня function run() { prints() } то вообще всё равно где и как объявлен prints, главное, чтобы до вызова run
Oleg
С декларейшн не нужно чтобы до вызова
Oleg
То есть ты располагаешь функции как тебе удбно и как оно будет удобнее для понимания, а не тупо пошагово
Дима
Если у меня выполнение в другом модуле, то это уже параллельно
Дима
То есть достаточно банального условия, что run() будет из другого модуля
Дима
Что практически повсеместно
Oleg
Ну понятно что если оное не лежит в одном скопе - оное не нужно
Oleg
Тут про скоп именно
Oleg
Если что-то лежит в одном скопе - можно сделать удобнее чем просто по порядку
Дима
Про скоп при запуске из специфичного положения, не просто про скоп)
Oleg
В общем если нет классов - оно очень юзабельно
Oleg
Если классы - вредно
Oleg
Потому что если метод содержит вложенные функции - что-то пошло не так