Руслан Куянец | Reactify
5.86K subscribers
697 photos
52 videos
39 files
277 links
Я IT-специалист, ментор и основатель проекта YeaHub и сообщества Reactify. Здесь рассказываю про Frontend и IT.

Менторство:
https://reactify.ru

YouTube канал:
https://youtube.com/@reactify-it

YeaHub:
https://yeahub.ru/

Связь:
@ruslan_kuyanets
Download Telegram
Разбор задач

С использованием let:

1. Цикл for запускает 10 таймаутов.
2. Каждый setTimeout "запоминает" свое значение i, потому что let создает новую переменную на каждой итерации.
3. После завершения цикла таймауты начинают выполняться, выводя значения от 0 до 9.

for (let i = 0; i < 10; i++) {
setTimeout(function() {
console.log(i);
}, 100);
}


С использованием var:

1. Цикл for также запускает 10 таймаутов.
2. Все setTimeout ссылаются на одну и ту же переменную i, так как var создает одну область видимости для всего цикла.
3. К моменту начала выполнения таймаутов, значение i стало 10 (цикл уже завершил свою работу). Поэтому все таймауты выводят 10.

for (var i = 0; i < 10; i++) {
setTimeout(function() {
console.log(i);
}, 100);
}


С let каждый таймаут "запоминает" свое уникальное значение i, в то время как с var все таймауты ссылаются на одну и ту же переменную, значение которой становится 10 к моменту выполнения таймаутов.

Необходимо помнить, что setTimeout является асинхронной функцией. При её вызове задача ставится в очередь задач, которая будет обработана event loop. Это означает, что все итерации цикла завершатся раньше, чем начнёт выполняться любой из setTimeout. Сначала выполнится весь синхронный код, и только после этого event loop начнёт выполнять задачи из очереди, включая наши setTimeout.

#JavaScript #обучающийПост #loop #var #let
👍8🔥2
Множественные циклы

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

Программирование - это достаточно творческая деятельность. Одну и ту же задачу можно решить по-разному. Как я подбираю слова для написания этого текста, так же и в программировании необходимо подбирать решения.

Важно продумывать, как лучше написать код и как его оптимизировать. Важно избегать множественных циклов. Конечно, бывают задачи, в которых необходимо использовать несколько циклов. Но в основном, все можно свести к одному циклу. Да, это не будет так элегантно, как применение готовых методов подряд, например:


const newArray = [1, 2, 3, 4].filter(num => num > 2).map(num => num + ' класс');


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

#JavaScript #array #loop
👍12😁3👌21💯1
Список задач на Циклы и примитивы с Codewars

Решаем задачи. Полезно для развития мышления и знания языка

1. even-or-odd
2. opposite-number
3. century-from-year
4. abbreviate-a-two-word-name
5. reversed-strings
6. credit-card-mask
7. remove-first-and-last-character
8. create-phone-number
9. How many arguments
10. Leap Years

#codewars #algorithm #task #loop #primitive
👍6🔥2👌1