CodeRoll | Frontend
5.04K subscribers
1.59K photos
73 videos
1 file
899 links
— Лучшее для разработчика и дизайнера / IT инструменты, курсы и книги
— Веб-разработка на JS, HTML, CSS, React, Vue,Angular

Купить рекламу: https://telega.in/c/coderoll

Чат: https://t.me/coderoll_chat

По всем вопросам пишите сюда - @yankovsky_ads
Download Telegram
JavaScript однопоточный или многопоточный? Ставим точку

Поводом для ревизии данного вопроса стало то, что я по сей день слышу от специалистов (в том числе позиционирующих себя как senior), что современный JavaScript является однопоточным. При этом они охотно задают этот вопрос на техническом интервью, вводя неуверенных кандидатов в заблуждение.

Ссылка

#js
Особенности типов данных и преобразования в JavaScript

На первый взгляд тема типов данных и преобразований может показаться легкой.

Обычно она изучается в самом начале погружения в JavaScript. Однако в этих темах есть неочевидные подводные камни, которые знает далеко не каждый разработчик.

В этой статье мы рассмотрим особенности типов данных и преобразований, которые многие пропустили.

Ссылка

#js
В JavaScript есть только примитивы и объекты.

Типы примитивов: boolean, null, undefined, bigint, number, string, и symbol.

Отличием примитива от объекта является то, что примитивы не имеют свойств или методов. Тем не менее, 'foo'.toUpperCase() преобразуется в 'FOO' и не вызывает TypeError. Это происходит потому, что при попытке получения свойства или метода у примитива (например, строки), JavaScript неявно обернет примитив объектом, используя один из классов-оберток (например, String), а затем сразу же уничтожит обертку после вычисления выражения. Все примитивы кроме null и undefined ведут себя таким образом.
Стилистические правила умерли, да здравствуют стилистические правила

Под конец прошлого года, по ряду причин, ESLint отказались от дальнейшей поддержки и развития стилистических правил. А тема, как по мне, несправедливо осталась в тени. Давайте разберемся, почему так произошло и какие изменения нас ждут на поприще статического анализа и форматирования кода.

Ссылка

#utils
Нездоровое IT

Эта твоя айтишечка — злобная и нездоровая хуйня. И я тут не про раздутые зарплаты и формошлёпство говорю, а про обычное здоровье. Вот то, которое в 20 лет, как у коня, а к 30 годам уже болят колени, спина, да и зрение село.

Фиг его знает, что тут причина, а что следствие. Наверное, корни проблемы находятся где-то в нёрдовой культуре ранних (древних, гы) программистов. Они ж по-совместительству были любителями пиццы, пива, и полуночного красноглазия.

Ссылка

#статьи
function* generator(i) {
yield i;
yield i * 2;
}

const gen = generator(10);

console.log(gen.next().value);
console.log(gen.next().value);
Каким будет результат?
Anonymous Quiz
17%
[0, 10], [10, 20]
13%
20, 20
60%
10, 20
10%
0, 10 and 10, 20
Объяснения к задаче выше

Обычные функции не могут быть остановлены на полпути после вызова. Однако функцию генератор можно "остановить" на полпути, а затем продолжить с того места, где она остановилась. Каждый раз, когда в функции-генераторе встречает ключевое слово yield, функция возвращает значение, указанное после него. Обратите внимание, что функция генератора в этом случае не return значение, оно yields значение.

Сначала мы инициализируем функцию генератор с i, равным 10. Мы вызываем функцию генератор, используя метод next (). Когда мы в первый раз вызываем функцию генератора, i равно 10. Он встречает первое ключевое слово yield, получая значение i. Генератор теперь "приостановлен", и 10 выводится в консоль.

Затем мы снова вызываем функцию с помощью метода next (). Она запускается с того места, где остановилась ранее, все еще с i, равным 10. Теперь он встречает следующее ключевое слово yield и возвращает i 2. i равно 10, поэтому он возвращает 10 2, то есть 20. Это приводит к 10, 20.
Окей, я джуниор, как начать управлять?


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

Cсылка

#статьи
Причины говнокода во фронтенде.

Как известно, изначальной задачей JavaScript было обеспечение интерактивности на HTML-странице, и предназначался язык, в первую очередь, для верстальщиков и дизайнеров, а для программистов предлагалось использовать интегрируемые в страницу Java-апплеты. И, несмотря на сходство в названии с Java, общего у JS с нею было только оно да C-подобный синтаксис. Под капотом же JavaScript был значительно вдохновлен языком Scheme, но именно этому странному языку, написанному в кратчайшие сроки, суждено было стать одним из самых популярных на планете, и решать задачи, для которых он никогда не проектировался.

Ссылка

#статьи
const firstPromise = new Promise((res, rej) => {
setTimeout(res, 500, 'один');
});

const secondPromise = new Promise((res, rej) => {
setTimeout(res, 100, 'два');
});

Promise.race([firstPromise, secondPromise]).then(res => console.log(res));
Каким будет результат?
Anonymous Quiz
6%
"один"
39%
"два"
37%
"два" "один"
18%
"один" "два"
Когда мы передаем несколько промисов методу Promise.race, он разрешает/отклоняет первый промис, который разрешается/отклоняется. В метод setTimeout мы передаем таймер: 500 мс для первого промиса (firstPromise) и 100 мс для второго промиса (secondPromise). Это означает, что secondPromise разрешается первым со значением 'два'. res теперь содержит значение 'два', которое выводиться в консоль.
Бинарный поиск

Бинарный поиск гораздо более эффективный в сравнении с линейным поиском.

Бинарный поиск основан на идее деления данных на половины и последующем поиске в одной из них с последующим делением.

Принцип бинарного поиска
Предположим, что в нашем отсортированном списке чисел от 1 до 100 мы будем искать число 87.

Ссылка

#js
JavaScript повсюду или почему веб-технологии захватили мир

Я давно слежу за развитием веб-технологий и каждый раз, натыкаясь на очередной холивар в интернете про злой и страшный JavaScript, залезающий на чужую территорию, инстинктивно хочу побыть его адвокатом. Обычно все мои доводы сводятся к банальному “не мы такие, жизнь такая” или “ничего личного, просто бизнес”, но в этот раз захотелось развернуто обосновать причины популярности веб-технологий.

Ссылка

#js
[1, 2, 3].map(num => {
if (typeof num === 'number') return;
return num * 2;
});
При использовании метода map, значение num равно элементу, над которым он в данный момент зацикливается. В этом случае элементы являются числами, поэтому условие оператора if typeof num === "number" возвращает true. Функция map создает новый массив и вставляет значения, возвращаемые функцией.

Однако мы не возвращаем значение. Когда мы не возвращаем значение из функции, функция возвращает значение undefined. Для каждого элемента в массиве вызывается функциональный блок, поэтому для каждого элемента мы возвращаем undefined.
Почему не любят JavaScript?

Пока
сообщество продолжает накрывать php могильной плитой, стоит обратить внимание на еще одного всеобщего любимчика. Mocha. LiveScript. JavaScript. Этот язык прошел довольно долгий путь, пережил много изменений и трудных поворотов, обошел конкурентов, таких как ActionScript и JScript, окреп и теперь активно пользуется большой частью сообщества.

В этом году самым популярным языком для коммерческого использования стал JavaScript — 19% разработчиков пишут на нем коммерческие проекты.

JS используется в Microsoft, PayPal, Netflix, Groupon, Uber, Facebook, Google.

Но почему JavaScript не любят?

Я постараюсь ответить на этот вопрос.

Ссылка

#js