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

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

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

YeaHub:
https://yeahub.ru/

Связь:
@ruslan_kuyanets
Download Telegram
Функция для глубокого копирования объектов

1️⃣ Проверка наличия и типа объекта
Проверяем, существует ли obj и является ли он объектом.
Если obj равен null или его тип данных не 'object', функция возвращает obj, не производя дополнительных действий.
Здесь мы гарантируем, что функция будет применена только к объектам или массивам.

2️⃣ Обработка массивов
Устанавливаем, является ли obj массивом.
Создаем новый пустой массив arrCopy и проходим по всем элементам obj. Примитивные значения копируются напрямую, а для объектов вызывается функция deepClone рекурсивно.
Этот этап обеспечивает глубокое копирование каждого элемента массива, включая вложенные объекты и массивы.

3️⃣ Обработка объектов
Если obj не массив, но объект, начинаем процесс копирования объекта.
Создаем пустой объект objCopy. Для каждого свойства obj, проверяем, является ли оно собственным с помощью метода hasOwnProperty. Собственные свойства копируются. Если значение свойства - объект, функция deepClone вызывается рекурсивно.
Так мы гарантируем, что все собственные свойства объекта, включая вложенные объекты, будут глубоко скопированы.

#JavaScript #code #Objects #deepCopy
👍4
Рекурсия в программировании

Рекурсия - это концепция в программировании, когда функция вызывает саму себя в своём теле. Она часто используется для решения задач, которые можно разбить на более мелкие подзадачи одного и того же типа.

Принцип работы

❗️Базовый случай: Каждая рекурсивная функция имеет базовый случай - условие, при выполнении которого рекурсия останавливается, и функция перестает вызывать саму себя.
Это очень важно так, как если условия нет или оно не правильное, функция будет бесконечной!

💡Рекурсивный случай: Если базовый случай не выполнен, функция входит в рекурсивный случай, вызывая саму себя и, возможно, изменяя передаваемые параметры.

Важно понять логику работы рекурсии, как вообще работает и как правильно делать.

Пример с факториалом

Факториал числа - это произведение всех положительных целых чисел от 1 до самого числа. Факториал 5, обозначаемый как 5!, равен 1 * 2 * 3 * 4 * 5 = 120.

Рекурсивная функция для расчета факториала:

function factorial(n) {
if (n === 0) { // базовый случай
return 1;
} else { // рекурсивный случай
return n * factorial(n - 1);
}
}

console.log(factorial(5)); // выводит 120


#JavaScript #обучающийПост #рекурсия #factorial
👍6
На канале новое видео. Оно короткое, я в нем просто меняю расширения файлов.
Следующее видео постараюсь сделать курс по TypeScript! На выходных переезжаю в новое жилье, НО постараюсь записать видео
🤝4
Совмещаю переезд, сбор вещей с написанием сценария✌️
Завтра хочу приступить к съёмкам.
Ребята, столько всего выписал, такие конспекты. Это просто… я сам некоторых вещей не знал.
Так же анализировал видео других авторов (даже по которым я учился) и понял, что их курсы на тройку.
Постараюсь записать достойное видео. Главное правильно сложить все в голове и не запутаться, не скомкать, красиво и грамотно изложить.
Короче, считаю это своим долгом.
Пожелайте удачи 🤞
🔥11👍2👌1
Всем привет. Беру недельный контент-перерыв. Видео в YouTube не будут выходить. Займусь переездом и обустройством нового жилища.
В свободное время буду писать сценарий, готовить слайды и примеры. По максимуму подготовлюсь к съёмкам и выпущу лучший видео курс по TypeScript. Как минимум постараюсь😄
Посты в тг канале в штатном режиме✊🏼 Запишу возможно пару небольших видео сюда.
👍12👌2😢1
🤔 выводы делайте сами 😁
😁9👍4👌3
Media is too big
VIEW IN TELEGRAM
Небольшой анализ IT рынка, Frontend разработчик

#job #hh
👍5
Какие темы вы хотели бы, чтобы я объяснил, рассказал? Пишите, в течение недели буду писать посты и записывать видео.
This media is not supported in your browser
VIEW IN TELEGRAM
Как вам джунгли?😄 до 12 ночи переезжали вчера😬
Стрелочные и обычные функции в JavaScript

Обычные функции

Синтаксис: Обычные функции имеют более развернутый синтаксис. Они могут быть объявлены с использованием ключевого слова function.

function greet(name) {
return "Hello, " + name + "!";
}


Контекст this: У обычных функций свой собственный контекст this. Это может вызвать проблемы с потерей контекста.

Использование: Они обычно используются, когда нужно создать метод объекта или конструктор.

Стрелочные функции

Синтаксис: Стрелочные функции имеют более короткий, сжатый синтаксис. Они объявляются с использованием символа "стрелки" =>.

const greet = (name) => "Hello, " + name + "!";

Контекст this: Стрелочные функции не имеют собственного контекста this. Они захватывают его из об surrounding кода, что делает их удобными для работы с контекстом.

Использование: Они идеально подходят для коротких функций и методов, где контекст this должен оставаться неизменным.

ОСНОВНЫЕ РАЗЛИЧИЯ

Синтаксис: Стрелочные функции более лаконичные.
Контекст this: Обычные функции имеют свой this, в то время как стрелочные функции наследуют this от surrounding кода.
Конструкторы: Стрелочные функции не могут быть использованы как конструкторы и вызваны с использованием new.
Arguments объект: Обычные функции имеют arguments объект, но стрелочные функции его не имеют.

#обучающийПост #JavaScript #functions
👍3🔥3
В первом примере используется обычная функция, и this внутри setInterval не ссылается на экземпляр Person. По умолчанию (в строгом режиме) this будет undefined, а в нестрогом — глобальный объект. Поскольку undefined не имеет свойства age, попытка инкрементировать его приведет к NaN

Во втором примере используется стрелочная функция, которая не имеет собственного this. Она "позаимствует" его из окружающего контекста, в данном случае из функции-конструктора Person. Это означает, что this.age будет корректно инкрементироваться каждую секунду, и в консоль будет выводиться возраст Person, который увеличивается на 1 каждую секунду.

#code #JavaScript #functions #this
👍3😢1
Media is too big
VIEW IN TELEGRAM
Записал небольшое видео про собеседования.
Могу пройтись подробнее по вопросам

#собеседование #вопросы
👍6🔥2
Вообще собеседования - это большая тема. Когда я провожу собесы, я стараюсь больше спросить про опыт, про проекты. Задаю лайтовые вопросы.
Но бывают прогеры с 2мя годами опыта, которые собесят сеньоров 6+ и душнят так, как-будто они лично JavasScript изобрели и со школы прогеры. Везде своих чсв хватает😅
😁4😭3
Выросли немного 🟢
Слежу за HH как за котировками акций 😄📈
🔥8
Media is too big
VIEW IN TELEGRAM
Привет, сделал разбор вопросов к собеседованиям по HTML. Записал небольшое видео. Говорю в пол голоса из-за эхо в комнате, пока ее не заставили мебелью😄

#собеседование #вопросы #html
👍12
React Новости 1000 просмотров😎
🔥8
Media is too big
VIEW IN TELEGRAM
Разбор тем по css на собеседовании.

#собеседование #вопросы #css
👍10🔥3
Media is too big
VIEW IN TELEGRAM
Разбор тем по JavaScript на собеседовании [1].

#собеседование #вопросы #JavaScript
👍83
Промисы в JavaScript

Промисы в JavaScript представляют собой объекты, которые предоставляют возможность работать с асинхронными операциями более удобным способом, чем это делается с использованием callback-функций. Промисы могут находиться в одном из трёх состояний:

🟡 Pending (ожидание): начальное состояние промиса, не выполнен и не отклонён.

🟢 Fulfilled (выполнено): операция завершилась успешно, промис выполнен.

🔴 Rejected (отклонено): произошла ошибка, промис отклонён.

Промисы используются для более удобной организации асинхронного кода, такого как работа с API, таймерами или другими операциями, которые не выполняются мгновенно.

#обучающийПост #JavaScript #promise
👍8
Создание и обработка промиса

Промис создаётся с использованием конструктора Promise, который принимает один аргументфункцию с двумя параметрами: resolve и reject. Функция resolve вызывается, когда асинхронная операция завершается успешно, а функция reject — когда происходит ошибка.

Для обработки промиса используются методы then, catch и finally.

then принимает функцию, которая будет вызвана, если промис выполнится успешно.
catch принимает функцию, которая будет вызвана, если промис будет отклонён.
🏁 finally принимает функцию, которая будет вызвана в любом случае, независимо от того, был ли промис выполнен или отклонён.

#обучающийПост #JavaScript #promise #code
🔥62👍2