В ноде из асинк операций только чтение огромных файлов? Практически каждая более менее ресурсоемкая операция имеет асинк-брата, который делегирует вычисление на лоу-левел библиотеку.
Да нет, все тут как раз правильно в статье. В ноде таких мест может быть навалом, особенно когда изначально приложение, например, было полностью синхронное (и архитектура писалась без учета того, что придется обрабатывать что то асинк). Потом приходит изменение, например что данные теперь у нас откуда нибудь там загружаются — и все, вся это кочерга лезет изнутрей наружу и все становится асинк. Нет, безусловно, архитектурно это можно улучшить так, чтобы асинк использовался по мере надобности, но если мы говорим о изменениях в большом приложении, то это не всегда самый оптимальный путь. Так что с минусами вы погорячились.
Очень странно когда программисты так начинают рассуждать. Этот цикл, или что там у автора, это не синтетическая фигня, которая никогда в коде не появится. В том-то и дело, что мы пишем код для машин, которые делают много операций. И нам часто это и нужно. Много операций. И да, можно конечно говорить, что на одну операцию это "ничего не стоит", но если мы используем какие-то фичи более активно, то все это имеет большое значение. Асинк/эвейт это не какая-то редко используемая фича, особенно учитывая асинхронную природу ноды, как пример. Поэтому вполне можно себе представить приложение, где такие проблемы могут возникать.
Это, конечно, скорее субъективный выбор, но попробую обосновать следующим образом. У var есть свои свойства, например:
поддержка хойстинга
scope на уровне функций
У let/const:
блоковая видимость
нет хойстинга (но есть TDZ)
Чаще более "предиктивно" работать как раз с правилами чем проще — тем лучше: то есть без хойстинга + чтобы разделение переменных было более простым (например, в цикле свои переменные, в общем потоке свои). Из-за этого иногда удобнее (или даже, возможно, правильнее, чем удобнее) использовать let/const.
Получается, что у вас в коде будут и let и const и var. Поэтому люди предпочитают исключать var для консистентности кода. Есть даже более жесткие eslint-конфиги, где не только var запрещен, но и let.
Ну, кстати, надо сказать, что getElementById все-таки не такой уж затратный, так как поиска не происходит, у браузера у уже есть Map с индексами по ид. Вот если бы там каждый раз было что то вроде querySelector, то да, это, конечно, требовало бы оптимизаций.
Все гораздо проще. Есть определенная специфика публикуемого материала. Если вы написали что-то, что требует большого глубокого анализа, то, вероятно, на Хабре этого нет и это будет многим интересно. Но если вы пишете про консольлог, то, я думаю, все-таки можно предположить, что такое уже было, так как топик для бегиннеров и многие на это натыкались.
Да просто вы на Хабре и тут вместо похвалы или похвалы + критики вы получаете просто критику. Даже если она не так уместна и даже если статья все равно доносит много здравых мыслей. Просто все живут в ожидании "той единственной" статьи, написанной не так, как автор хотел, а так, как хотел читатель, причем чтобы все-все-все в ней было хорошо. Много и бесплатно. Короче, не обращайте внимания, статья полезная. Вещи, которые высказаны выше имеют место быть, но, тем не менее, труд ваш полезен и большое вам спасибо.
Человек старался и, в принципе, добротную статью написал. Нет, пофиг, давайте про картинки с самолетами будем говорить.
Скажу за себя и еще вот за тех вот двух — спасибо!
В ноде из асинк операций только чтение огромных файлов? Практически каждая более менее ресурсоемкая операция имеет асинк-брата, который делегирует вычисление на лоу-левел библиотеку.
Да нет, все тут как раз правильно в статье. В ноде таких мест может быть навалом, особенно когда изначально приложение, например, было полностью синхронное (и архитектура писалась без учета того, что придется обрабатывать что то асинк). Потом приходит изменение, например что данные теперь у нас откуда нибудь там загружаются — и все, вся это кочерга лезет изнутрей наружу и все становится асинк. Нет, безусловно, архитектурно это можно улучшить так, чтобы асинк использовался по мере надобности, но если мы говорим о изменениях в большом приложении, то это не всегда самый оптимальный путь. Так что с минусами вы погорячились.
Очень странно когда программисты так начинают рассуждать. Этот цикл, или что там у автора, это не синтетическая фигня, которая никогда в коде не появится. В том-то и дело, что мы пишем код для машин, которые делают много операций. И нам часто это и нужно. Много операций. И да, можно конечно говорить, что на одну операцию это "ничего не стоит", но если мы используем какие-то фичи более активно, то все это имеет большое значение. Асинк/эвейт это не какая-то редко используемая фича, особенно учитывая асинхронную природу ноды, как пример. Поэтому вполне можно себе представить приложение, где такие проблемы могут возникать.
insertBefore — если хотите на объектах, insertAdjacentHTML — если хотите на стрингах
Это, конечно, скорее субъективный выбор, но попробую обосновать следующим образом. У var есть свои свойства, например:
У let/const:
Чаще более "предиктивно" работать как раз с правилами чем проще — тем лучше: то есть без хойстинга + чтобы разделение переменных было более простым (например, в цикле свои переменные, в общем потоке свои). Из-за этого иногда удобнее (или даже, возможно, правильнее, чем удобнее) использовать let/const.
Получается, что у вас в коде будут и let и const и var. Поэтому люди предпочитают исключать var для консистентности кода. Есть даже более жесткие eslint-конфиги, где не только var запрещен, но и let.
Ну, кстати, надо сказать, что getElementById все-таки не такой уж затратный, так как поиска не происходит, у браузера у уже есть Map с индексами по ид. Вот если бы там каждый раз было что то вроде querySelector, то да, это, конечно, требовало бы оптимизаций.
Все гораздо проще. Есть определенная специфика публикуемого материала. Если вы написали что-то, что требует большого глубокого анализа, то, вероятно, на Хабре этого нет и это будет многим интересно. Но если вы пишете про консольлог, то, я думаю, все-таки можно предположить, что такое уже было, так как топик для бегиннеров и многие на это натыкались.
Именно.
Да просто вы на Хабре и тут вместо похвалы или похвалы + критики вы получаете просто критику. Даже если она не так уместна и даже если статья все равно доносит много здравых мыслей. Просто все живут в ожидании "той единственной" статьи, написанной не так, как автор хотел, а так, как хотел читатель, причем чтобы все-все-все в ней было хорошо. Много и бесплатно. Короче, не обращайте внимания, статья полезная. Вещи, которые высказаны выше имеют место быть, но, тем не менее, труд ваш полезен и большое вам спасибо.
yasnoponyatno
Спасибо, отличная статья.
Человек старался и, в принципе, добротную статью написал. Нет, пофиг, давайте про картинки с самолетами будем говорить.
Скажу за себя и еще вот за тех вот двух — спасибо!
А, ясно. Я не читал примеры, но там, судя по всему, ошибка.
Ну, так NaN это нот-э-намбэр, то есть не валидная мат-операция, к примеру. Попробуйте пятерку разделить на "привет", то же самое будет.
Ну, так делить на ноль вроде как нельзя, нет? Или что вас удивляет?
Ну, так а в чем проблема то? Дубли что-ли?
Фиксится одной строкой в редьюсере, в самом начале:
Полный код:
Ну, так а в чем проблема то? Дубли что-ли?
Можно еще на 5 знаков короче:
А еще проще там задач нет? Скучно.
Ну и чисто по фану, то же самое, только пожатое до мама не горюй ) Напишите кто-нибудь короче:
Зачем в 2019 писать void 0?