Frontend | Вопросы собесов
Сайт easyoffer.ru Реклама @easyoffer_adv ВП @easyoffer_vp Тесты t.me/+T0COHtFzCJkwMDUy Задачи t.me/+_tcX2w2EmvdmMTgy Вакансии t.me/+CgCAzIyGHHg0Nzky
Ko'proq ko'rsatish📈 Telegram kanali Frontend | Вопросы собесов analitikasi
Frontend | Вопросы собесов (@easy_javascript_ru) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 18 260 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 7 320-o'rinni va Rossiya mintaqasida 36 894-o'rinni egallagan.
📊 Auditoriya ko‘rsatkichlari va dinamika
невідомо sanasidan buyon loyiha tez o‘sib, 18 260 obunachiga ega bo‘ldi.
20 Iyun, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -139 ga, so‘nggi 24 soatda esa -12 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.
- Tasdiqlash holati: Tasdiqlanmagan
- Jalb etish (ER): Auditoriya o‘rtacha 9.81% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 5.50% ini tashkil etuvchi reaksiyalarni to‘playdi.
- Post qamrovi: Har bir post o‘rtacha 1 791 marta ko‘riladi; birinchi sutkada odatda 1 004 ta ko‘rish yig‘iladi.
- Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 9 ta reaksiya keladi.
- Tematik yo‘nalishlar: Kontent ставь, браузер, html, border, flex kabi asosiy mavzularga jamlangan.
📝 Tavsif va kontent siyosati
Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
“Сайт easyoffer.ru
Реклама @easyoffer_adv
ВП @easyoffer_vp
Тесты t.me/+T0COHtFzCJkwMDUy
Задачи t.me/+_tcX2w2EmvdmMTgy
Вакансии t.me/+CgCAzIyGHHg0Nzky”
Yuqori yangilanish chastotasi (oxirgi ma’lumot 21 Iyun, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.
function создатьФункциюПриветствия(имя) {
var приветствие = 'Привет';
return function() {
console.log(приветствие + ', ' + имя);
};
}
var приветАлиса = создатьФункциюПриветствия('Алиса');
приветАлиса(); // Выводит: "Привет, Алиса"
В этом примере приветАлиса является функцией, замыкающей в себе переменные приветствие и имя из области видимости функции создатьФункциюПриветствия, даже после того, как выполнение функции создатьФункциюПриветствия завершено.
Зачем нужны замыкания
1️⃣ Инкапсуляция данных: Позволяют скрывать переменные внутри функции, делая их недоступными извне, что способствует созданию приватных переменных и методов.
2️⃣ Создание функций с привязанными параметрами: Могут использоваться для создания новых функций на основе существующих, но с заранее заданными или "зафиксированными" аргументами.
3️⃣ Работа с асинхронным кодом: Часто используются в обработчиках событий и колбэках для доступа к переменным из внешней области видимости.
4️⃣ Модульность и управление состоянием: Позволяют создавать модули и фабрики функций, которые могут иметь собственное внутреннее состояние, недоступное напрямую извне.
Важные моменты:
✅ Замыкания могут привести к утечкам памяти, если они неправильно используются, особенно в старых браузерах. Современные движки обладают сборщиками мусора, которые минимизируют эту проблему.
✅ Понимание замыканий необходимо для глубокого освоения, поскольку они используются во многих шаблонах и библиотеках.
Замыкания являются одной из фундаментальных концепций, обеспечивающей гибкость и мощь при работе с функциями и асинхронным кодом.
➡️ Примеры ответов
➡️ Список всех вопросов на Frontend Developerbox-sizing: border-box;, ширина и высота элемента начинают включать в себя внутренние отступы и толщину границ. Это означает, что фактический размер элемента (как он отображается на странице) будет соответствовать заданным ширине (width) и высоте (height), независимо от толщины границ и размеров внутренних отступов.
Без border-box
По умолчанию, если не указано значение, используется значение content-box. Это означает, что указанные ширина и высота применяются только к контентной области элемента. Внутренние отступы и границы добавляются к этим размерам, увеличивая общий размер элемента. Например:
.box {
width: 300px;
height: 200px;
padding: 20px;
border: 5px solid black;
/* box-sizing: content-box; по умолчанию */
}
Здесь фактический размер элемента будет 350px по ширине (300px контент + 40px отступы + 10px границы) и 250px по высоте.
C border-box
Если вы установите такое значение, размеры элемента будут включать в себя и внутренние отступы, и границы:
.box {
box-sizing: border-box;
width: 300px;
height: 200px;
padding: 20px;
border: 5px solid black;
}
В этом случае фактический размер элемента останется 300px по ширине и 200px по высоте, несмотря на наличие внутренних отступов и границ. Это делает расчет размеров более предсказуемым и упрощает верстку, особенно при работе с гибкими и адаптивными макетами.
Зачем использовать
Использование border-box упрощает работу с макетами, так как разработчику не нужно постоянно пересчитывать размеры элементов при изменении внутренних отступов или толщины границ. Это делает код более чистым и понятным, а процесс разработки — более быстрым и эффективным.
➡️ Примеры ответов
➡️ Список всех вопросов на Frontend Developer'2' == 2 // true, так как строка '2' преобразуется в число 2 перед сравнением 0 == false // true, так как 0 и false считаются эквивалентными null == undefined // true, специальное правило языкаОператор ===(строго равно) В отличие от ==, он сравнивает и значения, и типы без приведения типов. Если типы различаются, оператор немедленно возвращает
false, не пытаясь преобразовать один тип в другой. Это делает сравнение более строгим и предсказуемым.
Примеры:
'2' === 2 // false, так как типы различаются
0 === false // false, разные типы: число и булево значение
null === undefined // false, разные типы
Почему важно знать разницу
Понимание разницы между == и === критически важно, чтобы избежать ошибок, связанных с неожиданным приведением типов. Использование === помогает гарантировать, что сравниваемые значения совпадают по типу и значению, что является более безопасным подходом в большинстве случаев. В целом, рекомендуется использовать === для сравнения значений, чтобы код был более читабельным и предсказуемым.
== сравнивает значения, приводя их к общему типу, что может привести к неожиданным результатам из-за неявного приведения типов. === сравнивает как значения, так и типы без приведения типов, обеспечивая более строгое и предсказуемое сравнение. Использование === рекомендуется для большей надёжности и читабельности кода.
➡️ Примеры ответов
➡️ Список всех вопросов на Frontend Developer function Welcome(props) {
return <h1>Привет, {props.name}</h1>;
}
2️⃣ Классовые компоненты:
- Перед введением хуков классовые компоненты были единственным способом использования состояния и жизненного цикла компонентов .
- Они определяются путем расширения React.Component и требуют метода render(), который возвращает элемент React.
class Welcome extends React.Component {
render() {
return <h1>Привет, {this.props.name}</h1>;
}
}
Пропсы и состояние
- Пропсы (Props): Коротко для "свойств", пропсы передаются от родительских компонентов к дочерним. Они неизменяемы в пределах компонента, что означает, что дочерний компонент не может изменять пропсы, полученные от родителя.
- Состояние (State): Состояние позволяет компонентам реагировать на ввод пользователя, серверные запросы и любые другие действия, сохраняя и изменяя данные во времени. В отличие от пропсов, состояние управляется и изменяется внутри самого компонента.
Жизненный цикл компонента
Классовые компоненты имеют несколько "жизненных циклов" — методов, которые автоматически вызываются в разные моменты жизни компонента, такие как монтирование (компонент вставляется в DOM), обновление (компонент реагирует на изменения пропсов или состояния) и размонтирование (компонент удаляется из DOM). Хуки позволяют использовать аналогичные возможности в функциональных компонентах.
Компоненты обеспечивают эффективный способ организации пользовательского интерфейса, делая код более читабельным, легким для тестирования и поддержки. Они позволяют разработчикам строить сложные приложения из простых частей, облегчая разработку и обеспечивая лучший пользовательский опыт.
➡️ Примеры ответов
➡️ Список всех вопросов на Frontend DeveloperuseState
Принимает начальное значение состояния как аргумент и возвращает массив из двух элементов: текущее значение состояния и функцию для его обновления. Это позволяет компоненту реагировать на изменения данных и перерисовываться с новыми значениями.
import React, { useState } from 'react';
function Counter() {
// Объявляем новую переменную состояния "count"
const [count, setCount] = useState(0);
return (
<div>
<p>Вы кликнули {count} раз</p>
<button onClick={() => setCount(count + 1)}>
Кликни меня
</button>
</div>
);
}
В этом примере он используется для отслеживания количества кликов по кнопке. Компонент Counter хранит значение счетчика в count и обновляет его при помощи функции setCount, когда пользователь нажимает на кнопку.
Зачем использовать useState
1️⃣ Упрощение кода: Функциональные компоненты с хуками часто более лаконичны и проще для понимания, чем классовые компоненты.
2️⃣ Переиспользование логики состояния: Хуки позволяют легко переиспользовать логику управления состоянием между компонентами без необходимости создавать высшие компоненты (HOC) или использовать рендер-пропы.
3️⃣ Разделение ответственности: Он и другие хуки позволяют разделять различные аспекты логики компонента (например, управление состоянием, эффекты, контекст) на мелкие, независимые блоки кода.
4️⃣ Улучшение производительности: Функциональные компоненты могут быть меньше и быстрее, чем классовые, особенно когда используется правильное разделение логики на хуки.
Использование useState делает компоненты React более модульными и удобными, а также облегчает управление состоянием в приложениях.
➡️ Примеры ответов
➡️ Список всех вопросов на Frontend Developercatch для перехвата ошибок в любом месте цепочки промисов.
3️⃣ Синхронизация асинхронных операций: Упрощают выполнение нескольких асинхронных операций параллельно и обработку их результатов с помощью методов Promise.all, Promise.race, Promise.allSettled и Promise.any.
4️⃣ Стандартизация асинхронного кода: Стандартизируют способ работы с асинхронностью, предоставляя универсальный интерфейс для различных асинхронных операций, таких как работа с сетевыми запросами, таймерами и т.д.
Как работают промисы
Может находиться в одном из трех состояний:
- Ожидание (pending): начальное состояние, не выполнено и не отклонено.
- Выполнено (fulfilled): операция завершена успешно.
- Отклонено (rejected): операция завершена с ошибкой.
Когда он переходит из состояния ожидания в состояние выполнено или отклонено, он вызывает соответствующие обработчики, добавленные с помощью методов then, catch и finally. Эти методы возвращают новый промис, позволяя строить цепочки промисов.
Пример:
let promise = new Promise((resolve, reject) => {
setTimeout(() => resolve("данные получены"), 1000);
});
promise
.then(result => {
console.log(result); // "данные получены"
return result + " обработаны";
})
.then(result => {
console.log(result); // "данные получены обработаны"
})
.catch(error => {
console.error(error);
})
.finally(() => {
console.log("Промис завершил выполнение");
});
Промисы существенно улучшили способ работы с асинхронностью, предоставив более мощный и гибкий инструмент для организации асинхронного кода по сравнению с традиционными обратными вызовами. Они сделали код более читабельным, упростили обработку ошибок и синхронизацию асинхронных операций.
➡️ Примеры ответов
➡️ Список всех вопросов на Frontend Developerglobal в Node.js, что делает её доступной для использования в любом окружении.
Синтаксис
let timeoutID = setTimeout(function[, delay, arg1, arg2, ...]);
let timeoutID = setTimeout(functionCode[, delay]);
- function: Будет вызвана после задержки.
- functionCode: Строка кода для выполнения (использование этой формы не рекомендуется по соображениям безопасности).
- delay: Задержка в миллисекундах, после которой будет выполнена функция. Если не указать, по умолчанию будет использовано значение 0.
- arg1, arg2, ...: Аргументы, которые будут переданы в функцию при её вызове.
Пример:
function sayHello() {
console.log('Привет!');
}
// Вызывает функцию sayHello после задержки в 2000 миллисекунд (2 секунды)
setTimeout(sayHello, 2000);
Отмена выполнения setTimeout
Вызов ее возвращает идентификатор таймера, который можно использовать для отмены выполнения с помощью функции clearTimeout.
let timerId = setTimeout(sayHello, 2000);
// Отменяет выполнение
clearTimeout(timerId);
Особенности поведения
- Минимальная задержка: В HTML5 спецификация предусматривает минимальную задержку в 4ms для вложенных таймеров и в некоторых других случаях, что может повлиять на ожидаемое время выполнения.
- Задержка в неактивных вкладках: Браузеры могут изменять поведение таймеров для неактивных вкладок для оптимизации производительности и энергопотребления. Это может привести к значительно большей задержке, чем указано.
- Асинхронность: setTimeout не блокирует выполнение кода, который следует за ним. Он лишь запланирует выполнение функции на будущее, позволяя остальному коду продолжать выполняться без ожидания.
setTimeout широко используется для создания задержек, анимаций, отложенного выполнения кода (например, для дебаунсинга ввода пользователя) и решения других задач, где необходимо управление временем выполнения.
➡️ Примеры ответов
➡️ Список всех вопросов на Frontend Developerlet, она имеет блочную область видимости (block scope), ограничивая доступность переменной блоком (например, циклом или условным оператором), в котором была объявлена.
Переназначение и изменение
- var: Переменные, объявленные с помощью нее, могут быть переназначены и изменены. Это означает, что после объявления переменной её можно не только изменить, но и полностью переназначить на другое значение.
- const: Переменные, объявленные с помощью нее, не могут быть переназначены. Однако, если переменная представляет собой объект или массив, её содержимое может быть изменено (например, можно добавить новое свойство в объект или новый элемент в массив). Важно понимать, что const предотвращает переназначение самой переменной, но не защищает содержимое объекта от изменений.
Поднятие (Hoisting)
- var: Переменные, объявленные через нее, поднимаются в начало своей функциональной области видимости перед выполнением кода. Однако до их объявления в коде они будут иметь значение undefined.
- const: Подобно let, ее объявления тоже поднимаются, но доступ к переменной до её объявления в коде приведёт к ошибке ReferenceError. Это явление известно как "временная мертвая зона".
Инициализация
- var: Эти переменные можно объявить без инициализации, и их начальное значение будет undefined.
- const: Эти переменные требуют обязательной инициализации при объявлении. Если попытаться объявить его без инициализации, это приведет к синтаксической ошибке.
Примеры:
var varVariable = 1;
varVariable = 2; // Переназначение возможно
const constVariable = { a: 1 };
constVariable.a = 2; // Изменение содержимого объекта возможно
// constVariable = { b: 3 }; // Переназначение вызовет ошибку
if (true) {
var varScope = "доступна везде в функции";
const constScope = "доступна только в этом блоке";
}
console.log(varScope); // Выведет строку
console.log(constScope); // Ошибка: constScope не определена
Использование var, let и const зависит от нужд разработки. var предоставляет функциональную область видимости и большую гибкость за счёт возможности переназначения, но это может привести к ошибкам из-за непреднамеренных изменений или переназначений. const используется для объявления переменных, значение которых не должно изменяться, что помогает предотвратить случайное переназначение и делает код более предсказуемым. Сейчас let и const являются предпочтительными для блочной области видимости и контроля за изменяемостью данных.
➡️ Примеры ответов
➡️ Список всех вопросов на Frontend Developer"Привет, мир!".
2️⃣ Number (Число): Представляет собой числовое значение. Числа могут быть как целыми, так и с плавающей точкой. Примеры: 42, 3.14. Включает в себя специальные числовые значения, такие как Infinity, -Infinity и NaN (Not-a-Number — результат некорректной математической операции).
3️⃣ BigInt: Представляет целые числа произвольной длины. Был введен для работы с числами, размер которых превышает пределы Number. Пример: 9007199254740991n.
4️⃣ Boolean (Логический тип): Имеет два значения: true (истина) и false (ложь), используется для логических операций.
5️⃣ undefined: Обозначает отсутствие значения. Переменная, которой не было присвоено значение, автоматически получает значение undefined.
6️⃣ null: Также обозначает отсутствие значения. В отличие от undefined, null обычно присваивается переменной явно в качестве индикатора того, что значение отсутствует.
7️⃣ Symbol: Представляет уникальный и неизменяемый идентификатор, часто используется для создания уникальных ключей объектов. Каждый созданный Symbol гарантированно уникален.
Особенности примитивных типов
✅ Неизменяемость: Значения не могут быть изменены. Операции над примитивными значениями возвращают новые значения, но не изменяют исходные.
✅ Сравнение по значению: Сравниваются по значению. Два значения считаются равными, если они имеют одинаковый тип и значение.
✅ Преобразование типов: Автоматически преобразует примитивные типы данных при необходимости (например, при арифметических операциях или конкатенации строк).
Работа с примитивными типами
Хотя они и не имеют методов, позволяет временно оборачивать их в объекты-обертки (например, new String(), new Number(), new Boolean()), чтобы предоставить доступ к различным методам и свойствам, таким как .length для строк или .toFixed() для чисел. Однако это редко используется на практике, поскольку примитивные значения и так автоматически преобразуются в объекты при доступе к их свойствам или методам.
Примитивные типы данных являются основой для создания более сложных структур данных и логики.
➡️ Примеры ответов
➡️ Список всех вопросов на Frontend Developer10 призовых мест , в которых - 8 подписок на 3 месяца, и по одной подписке на год и 6 месяцев.
Условия участия максимально простые - нужно быть подписанным на телеграмм канал и чат
Жми на кнопку «Участвовать» внизу поста и следуй инструкции бота.<article>: Для независимого контента, который имеет смысл сам по себе (например, статья в блоге).
- <aside>: Для контента, слабо связанного с основным содержимым страницы (например, боковая панель).
- <details>: Для контента, который можно скрыть или показать по запросу пользователя.
- <figcaption>: Для подписи к изображению в элементе <figure>.
- <figure>: Для самостоятельных элементов, таких как изображения, диаграммы, коды, которые сопровождаются подписью.
- <footer>: Для нижнего колонтитула документа или раздела.
- <header>: Для верхнего колонтитула документа или раздела.
- <main>: Для основного содержимого документа.
- <mark>: Для выделения частей текста.
- <nav>: Для навигационных ссылок.
- <section>: Для разделов содержимого, которые связаны с определенной темой.
- <summary>: Для заголовка элемента <details>.
Значение семантики:
✅ Доступность: Делает веб-контент более доступным для людей с ограниченными возможностями, использующих вспомогательные технологии, такие как экранные читалки, поскольку эти технологии могут интерпретировать структуру и предоставлять контент в более понятной форме.
✅ SEO: Поисковые системы используют ее для лучшего понимания структуры и содержания веб-страницы, что может улучшить индексацию и ранжирование сайта.
✅ Улучшенная поддержка и разработка: Делает код более читаемым и легким для понимания, что облегчает сопровождение и дальнейшую разработку сайта.
Семантика в веб-разметке означает использование элементов HTML в соответствии с их смыслом и назначением. Это способствует созданию более доступного, SEO-оптимизированного и легкого для поддержки веб-контента. Включение семантических элементов в разметку веб-страницы является лучшей практикой.
➡️ Примеры ответов
➡️ Список всех вопросов на Frontend Developer function Welcome(props) {
return <h1>Привет, {props.name}</h1>;
}
2️⃣ Классовые компоненты:
- Перед введением хуков классовые компоненты были единственным способом использования состояния и жизненного цикла компонентов .
- Они определяются путем расширения React.Component и требуют метода render(), который возвращает элемент React.
class Welcome extends React.Component {
render() {
return <h1>Привет, {this.props.name}</h1>;
}
}
Пропсы и состояние
- Пропсы (Props): Коротко для "свойств", пропсы передаются от родительских компонентов к дочерним. Они неизменяемы в пределах компонента, что означает, что дочерний компонент не может изменять пропсы, полученные от родителя.
- Состояние (State): Состояние позволяет компонентам реагировать на ввод пользователя, серверные запросы и любые другие действия, сохраняя и изменяя данные во времени. В отличие от пропсов, состояние управляется и изменяется внутри самого компонента.
Жизненный цикл компонента
Классовые компоненты имеют несколько "жизненных циклов" — методов, которые автоматически вызываются в разные моменты жизни компонента, такие как монтирование (компонент вставляется в DOM), обновление (компонент реагирует на изменения пропсов или состояния) и размонтирование (компонент удаляется из DOM). Хуки позволяют использовать аналогичные возможности в функциональных компонентах.
Компоненты обеспечивают эффективный способ организации пользовательского интерфейса, делая код более читабельным, легким для тестирования и поддержки. Они позволяют разработчикам строить сложные приложения из простых частей, облегчая разработку и обеспечивая лучший пользовательский опыт.
➡️ Примеры ответов
➡️ Список всех вопросов на Frontend Developer function Welcome(props) {
return <h1>Привет, {props.name}</h1>;
}
2️⃣ Классовые компоненты:
- Перед введением хуков классовые компоненты были единственным способом использования состояния и жизненного цикла компонентов .
- Они определяются путем расширения React.Component и требуют метода render(), который возвращает элемент React.
class Welcome extends React.Component {
render() {
return <h1>Привет, {this.props.name}</h1>;
}
}
Пропсы и состояние
- Пропсы (Props): Коротко для "свойств", пропсы передаются от родительских компонентов к дочерним. Они неизменяемы в пределах компонента, что означает, что дочерний компонент не может изменять пропсы, полученные от родителя.
- Состояние (State): Состояние позволяет компонентам реагировать на ввод пользователя, серверные запросы и любые другие действия, сохраняя и изменяя данные во времени. В отличие от пропсов, состояние управляется и изменяется внутри самого компонента.
Жизненный цикл компонента
Классовые компоненты имеют несколько "жизненных циклов" — методов, которые автоматически вызываются в разные моменты жизни компонента, такие как монтирование (компонент вставляется в DOM), обновление (компонент реагирует на изменения пропсов или состояния) и размонтирование (компонент удаляется из DOM). Хуки позволяют использовать аналогичные возможности в функциональных компонентах.
Компоненты обеспечивают эффективный способ организации пользовательского интерфейса, делая код более читабельным, легким для тестирования и поддержки. Они позволяют разработчикам строить сложные приложения из простых частей, облегчая разработку и обеспечивая лучший пользовательский опыт.
➡️ Примеры ответов
➡️ Список всех вопросов на Frontend DeveloperuseEffect.
Монтирование
Вызываются в следующем порядке при создании компонента и его добавлении в DOM:
1️⃣ constructor(props)
- Конструктор компонента, где можно инициализировать состояние и привязывать методы.
2️⃣ static getDerivedStateFromProps(props, state)
- Вызывается непосредственно перед рендерингом как при первом монтировании, так и при последующих обновлениях. Используется для обновления состояния в ответ на изменение пропсов.
3️⃣ render()
- Единственный обязательный метод в классовом компоненте. Описывает, что отображается на экране.
4️⃣ componentDidMount()
- Вызывается сразу после монтирования (вставки компонента в DOM). Идеальное место для инициализации запросов к удаленным данным.
Обновление
Вызываются при обновлении компонента из-за изменений в пропсах или состоянии:
1️⃣ static getDerivedStateFromProps(props, state)
- Так же, как и при монтировании.
2️⃣ shouldComponentUpdate(nextProps, nextState)
- Позволяет оптимизировать приложение, предотвращая ненужные обновления.
3️⃣ render()
- Вызывается для повторного рендеринга в ответ на изменения.
4️⃣ getSnapshotBeforeUpdate(prevProps, prevState)
- Вызывается перед тем, как измененный компонент будет отрисован в DOM. Используется для сохранения информации о DOM (например, позиции скролла).
5️⃣ componentDidUpdate(prevProps, prevState, snapshot)
- Вызывается сразу после обновления. Не вызывается при первом рендере. Используется для выполнения сетевых запросов в ответ на изменения состояния или пропсов.
Размонтирование
1️⃣ componentWillUnmount()
- Вызывается перед удалением компонента из DOM. Используется для выполнения любой необходимой очистки, такой как отмена таймеров, отмена запросов к сети или удаление подписок.
Ошибки
1️⃣ static getDerivedStateFromError(error)
- Используется для отлавливания ошибок во время рендеринга дочерних компонентов.
2️⃣ componentDidCatch(error, info)
- Используется для регистрации ошибок, произошедших во время рендеринга, в методах жизненного цикла или в конструкторах дочерних компонентов.
Эти методы позволяют контролировать поведение компонентов на различных этапах их жизни, оптимизировать производительность и обрабатывать ошибки.
➡ Примеры ответов
➡ Список всех вопросов на Frontend Developer
Endi mavjud! Telegram Tadqiqoti 2025 — yilning asosiy insaytlari 
