Frontend | Вопросы собесов
Сайт easyoffer.ru Реклама @easyoffer_adv ВП @easyoffer_vp Тесты t.me/+T0COHtFzCJkwMDUy Задачи t.me/+_tcX2w2EmvdmMTgy Вакансии t.me/+CgCAzIyGHHg0Nzky
Show more📈 Analytical overview of Telegram channel Frontend | Вопросы собесов
Channel Frontend | Вопросы собесов (@easy_javascript_ru) in the Russian language segment is an active participant. Currently, the community unites 18 265 subscribers, ranking 7 325 in the Technologies & Applications category and 36 895 in the Russia region.
📊 Audience metrics and dynamics
Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 18 265 subscribers.
According to the latest data from 19 June, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -128 over the last 30 days and by 1 over the last 24 hours, overall reach remains high.
- Verification status: Not verified
- Engagement rate (ER): The average audience engagement rate is 9.80%. Within the first 24 hours after publication, content typically collects 5.48% reactions from the total number of subscribers.
- Post reach: On average, each post receives 1 790 views. Within the first day, a publication typically gains 1 002 views.
- Reactions and interaction: The audience actively supports content: the average number of reactions per post is 9.
- Thematic interests: Content is focused on key topics such as ставь, браузер, html, border, flex.
📝 Description and content policy
The author describes the resource as a platform for expressing subjective opinions:
“Сайт easyoffer.ru
Реклама @easyoffer_adv
ВП @easyoffer_vp
Тесты t.me/+T0COHtFzCJkwMDUy
Задачи t.me/+_tcX2w2EmvdmMTgy
Вакансии t.me/+CgCAzIyGHHg0Nzky”
Thanks to the high frequency of updates (latest data received on 20 June, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.
[[Prototype]], которое может быть ссылкой на другой объект. Этот объект, на который он ссылается, называется "прототипом". Когда вы пытаетесь получить доступ к свойству или методу объекта, и это свойство или метод не найдены в самом объекте, JavaScript автоматически ищет это свойство или метод в его прототипе. Этот процесс продолжается рекурсивно вверх по цепочке прототипов, пока свойство или метод не будут найдены или не будет достигнут конец цепочки прототипов.
Создание и использование прототипов
Можно задать или изменить с помощью Object.create(), Object.setPrototypeOf(), или просто установив свойство proto (хотя последний способ не рекомендуется к использованию из-за вопросов производительности и совместимости).
Пример:
const animal = {
type: 'Animal',
describe() {
return Это ${this.type};
}
};
const dog = Object.create(animal);
dog.type = 'Собака';
console.log(dog.describe()); // Это Собака
В этом примере объект dog наследует метод describe от объекта animal через прототипную цепочку.
Значение this
Важно отметить, что когда метод наследуется и вызывается на объекте-потомке, ключевое слово this внутри метода ссылается на объект-потомок, а не на объект-прототип, в котором метод был определен.
Прототипы — это механизм, который позволяет объектам наследовать свойства и методы от других объектов. Это основа для реализации наследования и повторного использования кода в языке. Прототипы играют ключевую роль в структуре и поведении объектов, позволяя создавать более модульный и поддерживаемый код.
Другими словами, прототипы позволяют объектам "наследовать" свойства и методы от других объектов, облегчая повторное использование кода и организацию структуры программ.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к Списку всех вопросов на Frontend Developer. Ставь 👍 если нравится контент.
🔐 База собесов | 🔐 База тестовыхthis внутри функции) может быть изменён несколькими способами. Это позволяет более гибко управлять тем, как функции вызываются, особенно в объектно-ориентированном программировании. Вот основные способы изменения контекста функции:
1️⃣ call() и apply()
Позволяют вызывать функцию с явным указанием объекта, который должен быть использован в качестве this, и с передачей аргументов в эту функцию.
✅ call(thisArg, arg1, arg2, ...): Вызывает функцию с указанным контекстом thisArg и аргументами arg1, arg2, ...
✅ apply(thisArg, [argsArray]): Аналогичен call, но принимает аргументы в виде массива.
function greet() {
console.log(Привет, ${this.name});
}
const person = { name: 'Алексей' };
greet.call(person); // Привет, Алексей
greet.apply(person); // Привет, Алексей
2️⃣ bind()
(thisArg[, arg1[, arg2[, ...]]]) создаёт новую функцию с привязанным контекстом thisArg и начальными аргументами arg1, arg2, ... function greet() { console.log(Привет, ${this.name}); } const person = { name: 'Мария' }; const greetPerson = greet.bind(person); greetPerson(); // Привет, Мария 3️⃣ Стрелочные функции (() => {}) не имеют собственного контекста this. Вместо этого они заимствуют this из окружающего лексического контекста. Это значит, что this внутри стрелочной функции будет таким же, как и в её родительском контексте, что упрощает работу с контекстом, особенно в колбэках и обработчиках событий.
const person = { name: 'Иван', greet: function() { // Стрелочная функция заимствует thisиз методаgreet window.setTimeout(() => console.log(Привет, ${this.name}`), 1000);
}
};
person.greet(); // Привет, Иван (после задержки в 1 секунду)
Использование контекста в классах
ES6 для методов, которые вы хотите передать в качестве колбэков и при этом сохранить контекст класса, часто используется .bind(this) в конструкторе или определение метода через стрелочную функцию в свойстве класса.
Изменение контекста функции — мощный механизм, позволяющий более гибко управлять выполнением кода. call(), apply(), и bind() дают возможность явно указать контекст this для функций, в то время как стрелочные функции позволяют наследовать контекст из родительского лексического окружения, делая код более чистым и понятным.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к Списку всех вопросов на Frontend Developer. Ставь 👍 если нравится контент.
🔐 База собесов | 🔐 База тестовыхdisplay является одним из ключевых свойств для управления макетом страницы. Оно определяет, как должен отображаться элемент и его потомки в документе. Оно может принимать различные значения, каждое из которых меняет поведение элемента в потоке документа, его видимость или способ взаимодействия с другими элементами.
Основные значения свойства display:
-block: Элемент отображается как блочный. Блочные элементы занимают всю доступную ширину контейнера, независимо от своего содержимого, и начинаются с новой строки.
-inline: Элемент отображается на той же строке, что и соседние элементы, и занимает только столько места, сколько необходимо для содержимого. Высота и ширина не применяются.
-inline-block: Элемент отображается как inline, но позволяет задавать ширину и высоту, как у block элементов.
-none: Элемент полностью убирается из потока документа, и его не видно на странице. Важно отличать от visibility: hidden, где элемент не виден, но занимает место в макете.
-flex: Элемент становится flex-контейнером, и его непосредственные потомки становятся flex-элементами, что позволяет использовать гибкую систему выравнивания и распределения пространства между элементами внутри контейнера.
-grid: Элемент становится grid-контейнером, и его непосредственные потомки становятся grid-элементами, что позволяет создавать сложные макеты с помощью двумерной сетки размещения элементов.
Как работает свойство display:
✅ Влияет на то, как элемент взаимодействует с потоком документа (то есть, как он размещается среди других элементов) и какие CSS-свойства к нему применимы (например, ширина, высота, отступы).
✅ Изменение его значения может изменить поведение элемента от блочного к инлайновому и наоборот, что влияет на расположение соседних элементов и на возможность применения определённых свойств к элементу.
✅ Например, блочный элемент (display: block;) будет пытаться занять всю доступную ширину контейнера и вытолкнет другие элементы на новую строку, в то время как инлайновый элемент (display: inline;) расположится на той же строке с другими инлайновыми или текстовыми элементами.
✅ Значение flex или grid превращает элемент в контейнер, который использует гибкую или сеточную модель для расположения своих потомков, соответственно, предоставляя мощные инструменты для создания адаптивных макетов.
Свойство display определяет, как элемент будет отображаться в документе, влияя на его расположение и взаимодействие с другими элементами. Изменяя значение этого свойства, можно управлять макетом страницы, использовать различные модели макета (блочную, инлайновую, flex, grid и др.), а также скрывать элементы без удаления их из DOM. Это делает display одним из самых мощных и важных инструментов.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к Списку всех вопросов на Frontend Developer. Ставь 👍 если нравится контент.
🔐 База собесов | 🔐 База тестовыхreduce, но проходит по массиву справа налево.
Поиск
- find(): Возвращает значение первого элемента в массиве, который удовлетворяет предоставленной функции проверки.
- findIndex(): Возвращает индекс первого элемента в массиве, который удовлетворяет предоставленной функции проверки.
- indexOf(): Возвращает первый индекс, по которому данный элемент может быть найден в массиве, или -1, если такого индекса нет.
- lastIndexOf(): Возвращает последний индекс, по которому данный элемент может быть найден в массиве, или -1, если такого индекса нет.
Добавление/Удаление элементов
- push(): Добавляет один или более элементов в конец массива и возвращает новую длину массива.
- pop(): Удаляет последний элемент из массива и возвращает его значение.
- shift(): Удаляет первый элемент из массива и возвращает его значение.
- unshift(): Добавляет один или более элементов в начало массива и возвращает новую длину массива.
Сортировка
- sort(): Сортирует элементы массива на месте и возвращает отсортированный массив.
- reverse(): Инвертирует порядок элементов в массиве на месте.
Срез и соединение
- slice(): Возвращает поверхностную копию части массива в новый массив.
- concat(): Объединяет два или более массивов/значений и возвращает новый массив.
Преобразование массива
- join(): Объединяет все элементы массива (или массивоподобного объекта) в строку.
Это лишь основные методы, доступные для работы с массивами. Каждый из них имеет свои особенности и случаи использования. Например, map может использоваться для преобразования элементов массива, filter для выборки подмножества элементов по определённому критерию, а reduce для свёртки массива в одно значение.
Использование этих методов облегчает манипуляцию данными и делает код более читаемым и эффективным.
Методы массивов предоставляют мощные инструменты для обработки и манипуляции массивами данных, включая итерацию, поиск, сортировку, преобразование и многое другое. Знание и понимание этих методов является ключевым для эффективной работы с массивами.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к Списку всех вопросов на Frontend Developer. Ставь 👍 если нравится контент.
🔐 База собесов | 🔐 База тестовых:hover — применяется к элементу, когда на него наводят курсор мыши.
a:hover {
color: red; /* Ссылка станет красной при наведении /
}
- :focus — применяется к элементу, когда он получает фокус (например, при переходе на элемент с помощью клавиатуры или при клике мыши).
input:focus {
border-color: blue; / Граница инпута станет синей при фокусе /
}
-:active — применяется к элементу в момент его активации пользователем (например, во время клика по кнопке).
button:active {
transform: scale(0.98); / Кнопка немного уменьшится при клике /
}
- :nth-child() — позволяет стилизовать элементы в зависимости от их порядка среди детей родительского элемента.
li:nth-child(odd) {
background-color: gray; / Заливка каждого нечетного элемента списка /
}
- :not() — исключает из выборки элементы, соответствующие указанному селектору.
div:not(.special) {
color: green; / Применяется к каждому div, который не имеет класса special */
}
Зачем нужны псевдоклассы:
Они делают CSS более мощным и гибким, позволяя разработчикам применять стили к элементам на основе их состояния или положения в документе, без изменения HTML-структуры. Это особенно полезно для создания интерактивных и реактивных пользовательских интерфейсов, где визуальное состояние элемента должно меняться в ответ на действия пользователя.
Псевдоклассы улучшают пользовательский опыт, делая интерфейс более отзывчивым и интуитивно понятным, а также облегчают поддержку и обновление стилей, минимизируя необходимость в добавлении и управлении классами и идентификаторами.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к Списку всех вопросов на Frontend Developer. Ставь 👍 если нравится контент.
🔐 База собесов | 🔐 База тестовых[(ngModel)], которая связывает значение HTML элемента формы (например, <input>) с свойством компонента.
<input [(ngModel)]="user.name">
В этом примере, user.name — это свойство компонента, которое связано с текстовым полем. Любое изменение в поле ввода немедленно обновит user.name, и любое изменение user.name будет немедленно отражено в поле ввода.
Преимущества:
✅ Упрощение разработки, поскольку не нужно вручную обновлять представление или модель при изменении другой части.
✅ Улучшение пользовательского опыта, обеспечивая немедленное отображение изменений без дополнительных действий пользователя или дополнительного кода.
Недостатки:
❌ Сложность отладки, поскольку автоматическое обновление значений в обе стороны может привести к неожиданным эффектам и затруднить трассировку потока данных.
❌ Производительность, особенно в больших и сложных приложениях, где непрерывная синхронизация данных между моделью и представлением может повлиять на быстродействие.
Двустороннее связывание данных — это мощный инструмент в руках разработчика, позволяющий создавать интерактивные и реактивные пользовательские интерфейсы, но его использование требует понимания возможных компромиссов между удобством разработки и производительностью приложения.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к Списку всех вопросов на Frontend Developer. Ставь 👍 если нравится контент.
🔐 База собесов | 🔐 База тестовыхpadding будет располагаться внутри коробки, увеличивая её внутреннее пространство, но не изменяя размер самой коробки. Margin располагается снаружи коробки, увеличивая пространство между этой коробкой и другими объектами вокруг неё, но не влияя на размеры самой коробки.
.box {
width: 100px;
height: 100px;
margin: 20px;
padding: 20px;
border: 5px solid black; /* Для наглядности границы */
}
В этом примере элемент с классом .box будет иметь внутреннее пространство (padding) в 20px вокруг содержимого внутри границы и внешнее пространство (margin) в 20px вокруг границы, отделяющее его от других элементов.
Margin и padding являются фундаментальными CSS-свойствами для стилизации веб-страниц, позволяя контролировать пространство вокруг и внутри элементов. Их правильное использование важно для создания желаемого макета и влияет на внешний вид и пользовательский опыт веб-проекта.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к Списку всех вопросов на Frontend Developer. Ставь 👍 если нравится контент.
🔐 База собесов | 🔐 База тестовыхstatic: Это значение по умолчанию. Элементы с position: static располагаются в обычном потоке документа, и свойства top, right, bottom, left и z-index на них не влияют.
2️⃣ relative: Элемент позиционируется относительно его обычного положения в потоке документа. Указание top, right, bottom и left приведет к смещению элемента относительно того места, где он находился бы, если бы был static. Элемент с position: relative остается в нормальном потоке документа и может смещаться от своей обычной позиции.
3️⃣ absolute: Элемент удаляется из обычного потока документа, и его позиция определяется относительно его ближайшего позиционированного (не static) предка, если таковой имеется; в противном случае относительно начальной контейнерной области. Свойства top, right, bottom и left определяют его точное положение.
4️⃣ fixed: Элемент удаляется из обычного потока документа и позиционируется относительно окна браузера. Он остается на том же месте даже при прокрутке страницы. Свойства top, right, bottom и left также определяют его позицию.
5️⃣ sticky: Элемент является гибридом между relative и fixed. Он ведет себя как relative до тех пор, пока элемент не достигнет определенной точки при прокрутке страницы, после чего он становится "застрявшим" и ведет себя как fixed, пока не будет достигнута противоположная граница его контейнера.
Каждое из этих значений позволяет разработчику точно управлять расположением элементов на странице, делая возможным создание сложных макетов и интерактивных интерфейсов. Выбор конкретного значения position зависит от задачи, которую нужно решить, и желаемого визуального эффекта.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к Списку всех вопросов на Frontend Developer. Ставь 👍 если нравится контент.
🔐 База собесов | 🔐 База тестовыхstyle. Этот метод позволяет задать стили индивидуально для конкретного элемента, напрямую внутри его тега, без использования внешних или внутренних стилевых листов.
<p style="color: red; font-size: 20px;">Этот текст будет красного цвета и с размером шрифта 20px.</p>
Приоритетность inline стилей
Они имеют более высокий приоритет, чем стили, заданные через внешние или внутренние стилевые листы. Это означает, что если для одного и того же элемента заданы стили через CSS-классы или идентификаторы и через inline атрибут style, то они будут применены.
Порядок приоритетов CSS:
1️⃣ Inline стили (наивысший приоритет)
2️⃣ ID селекторы
3️⃣ Классы, псевдоклассы и атрибуты
4️⃣ Элементы и псевдоэлементы (наименьший приоритет)
Стоит отметить, что существует способ переопределить даже их с помощью правила !important в CSS, однако его использование следует минимизировать, поскольку это может усложнить дальнейшее управление и обслуживание стилей.
Преимущества:
✅ Позволяют быстро протестировать и применить стили к конкретному элементу без необходимости редактирования стилевых листов.
✅ Полезны для стилей, которые должны быть применены к одному элементу и не повторяются в других частях веб-страницы.
Недостатки:
❌ Усложняют HTML-разметку и делают её менее читаемой.
❌ Затрудняют поддержку и обновление стилей, особенно при большом количестве inline стилей.
❌ Снижают возможность повторного использования CSS-правил и нарушают принцип разделения структуры и оформления.
Использование inline стилей может быть оправдано в определённых ситуациях, например, при динамическом изменении стилей или для уникальных стилей, специфичных для одного элемента. Однако для обеспечения лучшей организации кода и его поддержки рекомендуется использовать внешние или внутренние стилевые листы.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к Списку всех вопросов на Frontend Developer. Ставь 👍 если нравится контент.
🔐 База собесов | 🔐 База тестовых.parent {
display: flex;
justify-content: center; /* Центрирование по горизонтали /
align-items: center; / Центрирование по вертикали /
height: 100vh; / Высота родительского блока /
}
<div class="parent">
<div class="child">Центрированный блок</div>
</div>
Использование Grid
Также позволяет легко центрировать элементы как по горизонтали, так и по вертикали.
.parent {
display: grid;
place-items: center; / Центрирование по горизонтали и вертикали /
height: 100vh;
}
<div class="parent">
<div class="child">Центрированный блок</div>
</div>
2️⃣ Использование абсолютного позиционирования
Этот метод подходит для центрирования элемента внутри родительского блока с относительным позиционированием.
.parent {
position: relative;
height: 100vh;
}
.child {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
<div class="parent">
<div class="child">Центрированный блок</div>
</div>
3️⃣ Использование свойства margin
Для горизонтального центрирования блочного элемента его можно использовать с автоматическим расчетом слева и справа.
.child {
width: 50%; / Желаемая ширина блока /
margin: 0 auto; / Автоматический отступ слева и справа */
}
Однако, для вертикального центрирования этот метод работает только при фиксированной высоте родителя и требует дополнительных расчетов.
Выбор метода зависит от конкретных требований к макету и поддержки браузерами. Flexbox и Grid являются современными и предпочтительными способами для создания адаптивных макетов, в то время как абсолютное позиционирование и использование margin могут пригодиться в более специфических ситуациях.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к Списку всех вопросов на Frontend Developer. Ставь 👍 если нравится контент.
🔐 База собесов | 🔐 База тестовыхfunction identity<T>(arg: T): T {
return arg;
}
let output1 = identity<string>("myString"); // тип T становится string
let output2 = identity<number>(100); // тип T становится number
Дженерики — это концепция в программировании, позволяющая компонентам работать с разными типами данных, при этом сохраняя строгую типизацию. Это достигается за счет использования параметров типа, которые заменяются на конкретные типы данных при использовании компонента, улучшая тем самым безопасность, переиспользуемость и читаемость кода.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к Списку всех вопросов на Frontend Developer. Ставь 👍 если нравится контент.
🔐 База собесов | 🔐 База тестовыхstyle у элемента, то A = 1 (инлайновые стили).
✅ B: Количество ID селекторов в правиле.
✅ C: Количество классов, селекторов атрибутов и псевдоклассов в правиле.
✅ D: Количество типов элементов и псевдоэлементов в правиле.
При этом важно понимать, что селектор с более высоким уровнем специфичности переопределит селектор с более низким уровнем специфичности, независимо от порядка их объявления.
Примеры:
1️⃣ Инлайновый стиль (A=1, B=0, C=0, D=0): Наивысшая специфичность.
<div style="color: red;"></div>
2️⃣ ID селектор (A=0, B=1, C=0, D=0): Высокая специфичность.
#header { color: blue; }
3️⃣ Классы, селекторы атрибутов, псевдоклассы (A=0, B=0, C=1, D=0):
.button.active { color: green; }
4️⃣ Типы элементов и псевдоэлементы (A=0, B=0, C=0, D=1):
div::before { content: ">>"; }
Исключения и особые случаи:
✅ Универсальный селектор (*), комбинаторы (например, +, >, ~) и отрицание (:not()) не влияют на специфичность.
✅ Важность (!important): Если к правилу применён !important, это правило переопределяет другие правила, независимо от специфичности (использовать с осторожностью).
Понимание специфичности селекторов помогает избежать конфликтов стилей и делает код более предсказуемым и управляемым. Это основа для эффективной разработки стилей и помогает избежать излишнего использования !important, что может усложнить дальнейшую поддержку кода.
Специфичность — это важный инструмент для управления каскадом стилей и обеспечения того, чтобы правильные стили применялись к правильным элементам.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к Списку всех вопросов на Frontend Developer. Ставь 👍 если нравится контент.
🔐 База собесов | 🔐 База тестовыхlet и const, позволяет ограничить область видимости переменной блоком кода (например, циклом или условным оператором).
Глобальная область видимости:
var globalVar = "Я глобальная переменная";
function exampleFunction() {
console.log(globalVar); // Доступ к глобальной переменной внутри функции
}
console.log(globalVar); // Доступ к глобальной переменной вне функции
Локальная область видимости:
function exampleFunction() {
var localVar = "Я локальная переменная";
console.log(localVar); // Доступна только внутри функции
}
exampleFunction();
console.log(localVar); // Ошибка: localVar не определена
Блочная область видимости:
if (true) {
let blockVar = "Я переменная блочной видимости";
console.log(blockVar); // Доступна только внутри блока
}
console.log(blockVar); // Ошибка: blockVar не определена
Замыкания
Это функция, вместе со всеми переменными, которые ей доступны из своей области видимости, включая переменные из внешних областей видимости. Замыкания позволяют сохранять состояние внутри функции и обращаться к переменным из внешней области видимости даже после того, как функция была выполнена.
function outerFunction() {
var outerVar = "Я внешняя переменная";
function innerFunction() {
console.log(outerVar); // Доступ к переменной из внешней области видимости
}
return innerFunction;
}
var myFunction = outerFunction();
myFunction(); // Вывод: "Я внешняя переменная"
Область видимости важна для структурирования и организации кода, она помогает избегать конфликтов имен и обеспечивает безопасность данных, ограничивая доступ к переменным из разных частей программы. Понимание областей видимости и замыканий жизненно важно для разработки надёжных и эффективных приложений.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к Списку всех вопросов на Frontend Developer. Ставь 👍 если нравится контент.
🔐 База собесов | 🔐 База тестовых__). Например, пункт меню (menu__item) является элементом блока меню.
3️⃣ Модификатор (Modifier): Свойство, которое изменяет внешний вид или поведение блока или элемента. Модификаторы обозначаются двойным дефисом (--). Например, активное состояние кнопки может быть представлено как button--active.
Преимущества:
✅ Модульность: Благодаря независимости блоков, их легко переиспользовать в разных частях проекта или даже в разных проектах.
✅ Ясность и понятность: Структура классов становится более очевидной, что облегчает понимание структуры проекта новыми разработчиками.
✅ Упрощение масштабирования: Методология облегчает добавление новых функций и стилей без страха нарушить существующие.
✅ Уменьшение каскадирования: Использование уникальных имен классов для блоков и элементов сокращает вероятность конфликтов и неожиданного наследования стилей.
<div class="menu">
<div class="menu__item menu__item--active">Главная</div>
<div class="menu__item">Новости</div>
</div>
В этом примере menu является блоком, menu__item — элементом этого блока, а menu__item--active — модификатором элемента, указывающим на его активное состояние.
Методология BEM предлагает систематический подход к структурированию классов CSS и HTML-разметки, который помогает создавать масштабируемые и легко поддерживаемые веб-проекты. Это достигается за счет разделения интерфейса на независимые блоки, что упрощает разработку, отладку и тестирование веб-приложений.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к Списку всех вопросов на Frontend Developer. Ставь 👍 если нравится контент.
🧩 Идущий | 🔐 Собесы | 🔐 Тестовыеundefined). Это означает, что результат его работы нельзя присвоить переменной.
- Изменение оригинального массива: Может изменять оригинальный массив, если внутри функции-коллбэка производятся изменения его элементов.
const array1 = ['a', 'b', 'c'];
array1.forEach(element => console.log(element));
// Выводит каждый элемент в консоль
map
- Назначение: Используется для создания нового массива, заполненного результатами вызова предоставленной функции на каждом элементе исходного массива. Основное назначение — трансформация данных.
- Возвращаемое значение: Возвращает новый массив, который содержит результаты применения функции к каждому элементу исходного массива. Это позволяет использовать его в цепочках вызовов и присваивать результат его работы переменной.
- Изменение оригинального массива: Не изменяет оригинальный массив, что делает его предпочтительным в функциональном программировании.
const array2 = [1, 4, 9];
const map1 = array2.map(x => x * 2);
console.log(map1);
// Выводит новый массив [2, 8, 18]
Основные различия
- Цель использования: forEach для выполнения операций или побочных эффектов на каждом элементе массива; map для создания нового массива на основе обработки каждого элемента исходного массива.
- Возвращаемое значение: forEach возвращает undefined, в то время как map возвращает новый массив.
- Изменение исходного массива: forEach может изменять исходный массив, если это предусмотрено логикой коллбэка; map не изменяет исходный массив, а создаёт новый.
forEach используется для выполнения функции на каждом элементе массива без создания нового массива. Он идеален для ситуаций, когда вам нужно применить какой-либо побочный эффект.
map применяется для трансформации исходного массива в новый, без изменения исходного массива
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к Списку всех вопросов на Frontend Developer. Ставь 👍 если нравится контент.
🧩 Идущий | 🔐 Собесы | 🔐 Тестовые
Available now! Telegram Research 2025 — the year's key insights 
