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 270 subscribers, ranking 7 345 in the Technologies & Applications category and 36 940 in the Russia region.
📊 Audience metrics and dynamics
Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 18 270 subscribers.
According to the latest data from 15 June, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -134 over the last 30 days and by -7 over the last 24 hours, overall reach remains high.
- Verification status: Not verified
- Engagement rate (ER): The average audience engagement rate is 9.73%. Within the first 24 hours after publication, content typically collects 5.72% reactions from the total number of subscribers.
- Post reach: On average, each post receives 1 778 views. Within the first day, a publication typically gains 1 046 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 16 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.
false, называются "falsy" значениями. Существует всего семь таких значений:
🟠`false`
Логическое значение false.
console.log(Boolean(false)); // false
🟠`0`
Число ноль.
console.log(Boolean(0)); // false
🟠`-0`
Отрицательное число ноль (хотя это редко встречается на практике).
console.log(Boolean(-0)); // false
🟠`0n`
Число BigInt с значением ноль.
console.log(Boolean(0n)); // false
🟠`""` (пустая строка)
Строка без символов.
console.log(Boolean("")); // false
🟠`null`
Специальное значение, обозначающее отсутствие какого-либо значения.
console.log(Boolean(null)); // false
🟠`undefined`
Специальное значение, обозначающее необъявленное или неприсвоенное значение.
console.log(Boolean(undefined)); // false
🟠`NaN`
Специальное значение, обозначающее не число (Not-a-Number).
console.log(Boolean(NaN)); // false
🚩Примеры использования
🟠Проверка значений на falsy
В условиях (if statements) все falsy значения интерпретируются как false.
const values = [false, 0, -0, 0n, "", null, undefined, NaN];
values.forEach(value => {
if (!value) {
console.log(`${value} is falsy`);
}
});
Примеры в условиях
if (!false) {
console.log('false is falsy'); // выводится
}
if (!0) {
console.log('0 is falsy'); // выводится
}
if (!"") {
console.log('"" is falsy'); // выводится
}
if (!null) {
console.log('null is falsy'); // выводится
}
if (!undefined) {
console.log('undefined is falsy'); // выводится
}
if (!NaN) {
console.log('NaN is falsy'); // выводится
}
🟠Использование в логических операторах
Falsy значения также учитываются в логических операциях.
const value = null;
const result = value || 'default value';
console.log(result); // 'default value', потому что value является falsy
Ставь 👍 и забирай 📚 Базу знанийconst obj = {
name: 'Alice',
age: 25
};
🟠Конструктор `Object`
Создание объекта с помощью конструктора Object.
const obj = new Object();
obj.name = 'Alice';
obj.age = 25;
🟠Функция-конструктор (Constructor Function)
Использование функции-конструктора для создания объектов.
function Person(name, age) {
this.name = name;
this.age = age;
}
const alice = new Person('Alice', 25);
const bob = new Person('Bob', 30);
🟠Метод `Object.create`
Создание нового объекта с указанным прототипом.
const proto = {
greet: function() {
console.log(`Hello, my name is ${this.name}`);
}
};
const obj = Object.create(proto);
obj.name = 'Alice';
obj.age = 25;
obj.greet(); // Hello, my name is Alice
🟠Класс (Class)
Использование классов (синтаксический сахар над функцией-конструктором).
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
greet() {
console.log(`Hello, my name is ${this.name}`);
}
}
const alice = new Person('Alice', 25);
const bob = new Person('Bob', 30);
alice.greet(); // Hello, my name is Alice
bob.greet(); // Hello, my name is Bob
🟠Фабричная функция (Factory Function)
Использование функции для создания и возврата объектов.
function createPerson(name, age) {
return {
name: name,
age: age,
greet: function() {
console.log(`Hello, my name is ${this.name}`);
}
};
}
const alice = createPerson('Alice', 25);
const bob = createPerson('Bob', 30);
alice.greet(); // Hello, my name is Alice
bob.greet(); // Hello, my name is Bob
🟠JSON.parse
Создание объекта из JSON-строки.
const jsonString = '{"name": "Alice", "age": 25}';
const obj = JSON.parse(jsonString);
console.log(obj.name); // Alice
console.log(obj.age); // 25
🟠Использование Spread/Rest операторов
Создание копий объектов или объединение объектов.
const obj1 = { name: 'Alice' };
const obj2 = { age: 25 };
const mergedObj = { ...obj1, ...obj2 };
console.log(mergedObj); // { name: 'Alice', age: 25 }
const copiedObj = { ...obj1 };
console.log(copiedObj); // { name: 'Alice' }
🟠Функции-генераторы объектов
Использование функций для динамического создания объектов.
function createPerson(name, age) {
return {
name,
age,
greet() {
console.log(`Hello, my name is ${this.name}`);
}
};
}
const alice = createPerson('Alice', 25);
alice.greet(); // Hello, my name is Alice
Ставь 👍 и забирай 📚 Базу знанийin проверяет, существует ли указанное свойство в объекте или его прототипе.
const obj = {
name: 'Alice',
age: 25
};
console.log('name' in obj); // true
console.log('age' in obj); // true
console.log('gender' in obj); // false
🚩Метод `hasOwnProperty`
Метод hasOwnProperty проверяет, существует ли указанное свойство непосредственно в объекте (не в его прототипе).
const obj = {
name: 'Alice',
age: 25
};
console.log(obj.hasOwnProperty('name')); // true
console.log(obj.hasOwnProperty('age')); // true
console.log(obj.hasOwnProperty('gender')); // false
🚩Оператор `undefined`
Вы также можете проверить, является ли значение свойства undefined. Однако этот метод не отличает отсутствие свойства от свойства, имеющего значение undefined.
const obj = {
name: 'Alice',
age: 25,
gender: undefined
};
console.log(obj.name !== undefined); // true
console.log(obj.age !== undefined); // true
console.log(obj.gender !== undefined); // false, хотя свойство есть, его значение undefined
console.log(obj.height !== undefined); // false, так как свойство отсутствует
🚩Примеры использования
🟠Оператор `in` и наследование
Если свойство находится в цепочке прототипов, оператор in вернет true.
const parentObj = {
inheritedProperty: 'I am inherited'
};
const childObj = Object.create(parentObj);
childObj.ownProperty = 'I am own property';
console.log('inheritedProperty' in childObj); // true
console.log('ownProperty' in childObj); // true
console.log(childObj.hasOwnProperty('inheritedProperty')); // false
console.log(childObj.hasOwnProperty('ownProperty')); // true
🟠Проверка вложенных свойств
Для проверки наличия вложенных свойств можно использовать цепочку проверок или библиотеку, такую как Lodash, которая предоставляет функцию _.has.
const nestedObj = {
user: {
name: 'Alice',
address: {
city: 'Wonderland'
}
}
};
console.log('user' in nestedObj && 'name' in nestedObj.user); // true
console.log('user' in nestedObj && 'age' in nestedObj.user); // false
console.log('user' in nestedObj && 'address' in nestedObj.user && 'city' in nestedObj.user.address); // true
Ставь 👍 и забирай 📚 Базу знаний${}.
const name = 'Alice';
const age = 25;
const greeting = `Hello, my name is ${name} and I am ${age} years old.`;
console.log(greeting);
// Вывод: Hello, my name is Alice and I am 25 years old.
🟠Многострочные строки
Шаблонные литералы позволяют создавать многострочные строки без необходимости использования символов переноса строки (\n).
const multiLineString = `This is a string
that spans across
multiple lines.`;
console.log(multiLineString);
// Вывод:
// This is a string
// that spans across
// multiple lines.
🟠Встроенные выражения
Внутри шаблонных литералов можно использовать любые JavaScript-выражения.
const a = 5;
const b = 10;
const result = `The sum of ${a} and ${b} is ${a + b}.`;
console.log(result);
// Вывод: The sum of 5 and 10 is 15.
🟠Вызов функций внутри шаблонных литералов
Можно вызывать функции и методы внутри шаблонных литералов.
function toUpperCase(str) {
return str.toUpperCase();
}
const name = 'Alice';
const loudGreeting = `Hello, ${toUpperCase(name)}!`;
console.log(loudGreeting);
// Вывод: Hello, ALICE!
🟠Тегированные шаблонные литералы
Тегированные шаблонные литералы позволяют обработать строку с помощью функции перед ее окончательной интерпретацией.
function tag(strings, ...values) {
console.log(strings);
console.log(values);
return 'Tagged template';
}
const name = 'Alice';
const age = 25;
const taggedResult = tag`Name: ${name}, Age: ${age}`;
console.log(taggedResult);
// Вывод:
// [ 'Name: ', ', Age: ', '' ]
// [ 'Alice', 25 ]
// Tagged template
Ставь 👍 и забирай 📚 Базу знанийmap, filter, reduce и forEach в JavaScript предназначены для обработки массивов и предоставляют мощные инструменты для работы с данными. Эти методы упрощают и делают код более читаемым и декларативным.
🚩forEach
Метод forEach выполняет указанную функцию один раз для каждого элемента в массиве.
const array = [1, 2, 3, 4, 5];
array.forEach((element) => {
console.log(element);
});
🚩Особенности
🟠Не возвращает значение
forEach просто выполняет функцию для каждого элемента и не возвращает новый массив или значение.
🟠Использование
Подходит для выполнения побочных эффектов, таких как логирование или изменение элементов массива.
🚩map
Метод map создаёт новый массив с результатом вызова указанной функции для каждого элемента массива.
const array = [1, 2, 3, 4, 5];
const doubled = array.map((element) => {
return element * 2;
});
console.log(doubled); // [2, 4, 6, 8, 10]
🟠Возвращает новый массив
Каждый элемент нового массива является результатом вызова функции.
🟠Использование
Подходит для преобразования данных, не изменяя исходный массив.
🚩filter
Метод filter создаёт новый массив со всеми элементами, прошедшими проверку, задаваемую в передаваемой функции.
const array = [1, 2, 3, 4, 5];
const evenNumbers = array.filter((element) => {
return element % 2 === 0;
});
console.log(evenNumbers); // [2, 4]
🟠Возвращает новый массив
Включает только те элементы, которые соответствуют условию.
🟠Использование
Подходит для фильтрации данных на основе заданного условия.
🚩reduce
Метод reduce выполняет функцию редуктора (сборщика) для каждого элемента массива, сводя массив к одному значению.
const array = [1, 2, 3, 4, 5];
const sum = array.reduce((accumulator, currentValue) => {
return accumulator + currentValue;
}, 0);
console.log(sum); // 15
🟠Возвращает одно значение
Результат выполнения функции редуктора.
🟠Начальное значение
Второй аргумент функции reduce задает начальное значение аккумулятора.
🟠Использование
Подходит для агрегирования данных, например, для вычисления суммы, произведения или объединения значений.
Ставь 👍 и забирай 📚 Базу знаний<div class="container">
<div class="row">
<div class="col-md-4">Колонка 1</div>
<div class="col-md-4">Колонка 2</div>
<div class="col-md-4">Колонка 3</div>
</div>
</div>
🟠Компоненты
Bootstrap включает множество готовых компонентов, таких как кнопки, формы, карточки, навигационные панели, модальные окна и многое другое. Эти компоненты можно легко стилизовать и настроить.
<button type="button" class="btn btn-primary">Основная кнопка</button>
🟠JavaScript плагины
В Bootstrap также включены JavaScript плагины, которые добавляют интерактивность и динамичность. Например, модальные окна, карусели, выпадающие меню и другие.
<!-- Кнопка для вызова модального окна -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal">
Запустить модальное окно
</button>
<!-- Модальное окно -->
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Название модального окна</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
Содержимое модального окна.
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Закрыть</button>
<button type="button" class="btn btn-primary">Сохранить изменения</button>
</div>
</div>
</div>
</div>
🟠Утилиты
В Bootstrap имеются утилиты для быстрого добавления часто используемых стилей, таких как отступы, цвета, выравнивание текста и другие. Эти утилиты позволяют быстро применять стили без написания дополнительных CSS-классов.
<div class="p-3 mb-2 bg-primary text-white">Основной фон с отступами и белым текстом</div>
Ставь 👍 и забирай 📚 Базу знаний@mixin border-radius($radius) {
-webkit-border-radius: $radius;
-moz-border-radius: $radius;
border-radius: $radius;
}
2⃣Использование миксина
.box {
@include border-radius(10px);
}
.button {
@include border-radius(5px);
}
🚩Пример на LESS
1⃣Определение миксина
.border-radius(@radius) {
-webkit-border-radius: @radius;
-moz-border-radius: @radius;
border-radius: @radius;
}
2⃣Использование миксина
.box {
.border-radius(10px);
}
.button {
.border-radius(5px);
}
🚩Пример на Stylus
1⃣Определение миксина
border-radius(radius)
-webkit-border-radius: radius
-moz-border-radius: radius
border-radius: radius
2⃣Использование миксина
.box
border-radius(10px)
.button
border-radius(5px
Ставь 👍 и забирай 📚 Базу знаний
Available now! Telegram Research 2025 — the year's key insights 
