🧐Что такое миксины в препроцессорах?
Миксины в препроцессорах CSS, таких как Sass, LESS и Stylus, представляют собой переиспользуемые блоки кода, которые можно вставлять в другие блоки стилей. Они позволяют группировать наборы стилей, которые можно повторно использовать по всему CSS-файлу. Это помогает уменьшить дублирование кода и упростить его поддержку.
🛑Примеры использования миксинов
🛑Определение миксина
🛑Использование миксина
🛑Пример на LESS
🛑Определение миксина
🛑Использование миксина
🛑Пример на Stylus
🛑Определение миксина
🛑Использование миксина
Миксины в препроцессорах CSS, таких как Sass, LESS и Stylus, представляют собой переиспользуемые блоки кода, которые можно вставлять в другие блоки стилей. Они позволяют группировать наборы стилей, которые можно повторно использовать по всему CSS-файлу. Это помогает уменьшить дублирование кода и упростить его поддержку.
🛑Примеры использования миксинов
🛑Определение миксина
@mixin border-radius($radius) {
-webkit-border-radius: $radius;
-moz-border-radius: $radius;
border-radius: $radius;
} 🛑Использование миксина
.box {
@include border-radius(10px);
}
.button {
@include border-radius(5px);
} 🛑Пример на LESS
🛑Определение миксина
.border-radius(@radius) {
-webkit-border-radius: @radius;
-moz-border-radius: @radius;
border-radius: @radius;
}🛑Использование миксина
.box {
.border-radius(10px);
}
.button {
.border-radius(5px);
}🛑Пример на Stylus
🛑Определение миксина
border-radius(radius)
-webkit-border-radius: radius
-moz-border-radius: radius
border-radius: radius
🛑Использование миксина
.box
border-radius(10px)
.button
border-radius(5px
🔥2⚡1💯1
"Hi, I’m Bakhromov Abror — welcome to my portfolio. Built with HTML, Tailwind, JavaScript, React, and Redux to showcase my projects and skills." newww
https://bakhromovvrez.onrender.com
https://bakhromovvrez.onrender.com
💯3🔥2🆒2⚡1
🧐 Что такое screen reader и accessibility?
Screen reader — это программа, которая озвучивает содержимое экрана для людей с нарушениями зрения.
Accessibility (доступность) — это практика разработки интерфейсов, которые доступны всем пользователям, включая людей с ограниченными возможностями. Это включает ARIA-атрибуты, контрастность, навигацию с клавиатуры и семантику.
Screen reader — это программа, которая озвучивает содержимое экрана для людей с нарушениями зрения.
Accessibility (доступность) — это практика разработки интерфейсов, которые доступны всем пользователям, включая людей с ограниченными возможностями. Это включает ARIA-атрибуты, контрастность, навигацию с клавиатуры и семантику.
🔥2🆒2⚡1💯1
🧐 Особенности работы с function expression и function declaration?
- Function declaration: создаётся при фазе инициализации, доступна до объявления;
- Function expression: создаётся во время выполнения, не доступна до строки объявления;
- У выражения можно создавать анонимные функции или присваивать переменным.
- Function declaration: создаётся при фазе инициализации, доступна до объявления;
- Function expression: создаётся во время выполнения, не доступна до строки объявления;
- У выражения можно создавать анонимные функции или присваивать переменным.
⚡3🔥1🆒1
🤔 Что такое псевдоклассы?
Это ключевые слова, добавляемые к селекторам, которые указывают на специальное состояние выбранного элемента. Псевдоклассы позволяют стилизовать элементы на основе их состояния в документе, без необходимости добавления дополнительных классов или ID напрямую в HTML-код. С их помощью можно, например, изменить внешний вид ссылок при наведении курсора, стилизовать четные и нечетные элементы списка, изменять стиль элементов при получении фокуса и многое другое.
🚩Зачем нужны псевдоклассы?
Они делают CSS более мощным и гибким, позволяя разработчикам применять стили к элементам на основе их состояния или положения в документе, без изменения HTML-структуры. Это особенно полезно для создания интерактивных и реактивных пользовательских интерфейсов, где визуальное состояние элемента должно меняться в ответ на действия пользователя.
Это ключевые слова, добавляемые к селекторам, которые указывают на специальное состояние выбранного элемента. Псевдоклассы позволяют стилизовать элементы на основе их состояния в документе, без необходимости добавления дополнительных классов или ID напрямую в HTML-код. С их помощью можно, например, изменить внешний вид ссылок при наведении курсора, стилизовать четные и нечетные элементы списка, изменять стиль элементов при получении фокуса и многое другое.
: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-структуры. Это особенно полезно для создания интерактивных и реактивных пользовательских интерфейсов, где визуальное состояние элемента должно меняться в ответ на действия пользователя.
🔥1💯1🆒1
🧐 Почему map используют чаще, чем объект?
Хотя объекты
🛑`Map` может использовать любые типы данных в качестве ключей
В объектах
Пример с
🛑`Map` хранит порядок ключей
В объекте
Пример с
🛑`Map` быстрее при частых добавлениях/удалениях
Объекты
Разница в скорости
В
В объекте
🛑У `Map` есть удобные методы
Объект
В объекте
🛑`Map` не имеет проблем с прототипами
В объекте
Чтобы обойти это, приходится делать так
В
Хотя объекты
{} исторически использовались как ассоциативные массивы (ключ-значение), у Map есть ряд преимуществ, которые делают его более удобным в большинстве случаев.🛑`Map` может использовать любые типы данных в качестве ключей
В объектах
{} ключи всегда автоматически приводятся к строке. const obj = {};
const key1 = {};
const key2 = {};
obj[key1] = "value1";
obj[key2] = "value2";
console.log(obj); // { '[object Object]': 'value2' }
console.log(obj[key1]); // "value2" (ключи перезаписались, потому что оба стали "[object Object]")Пример с
Map: const map = new Map();
map.set(key1, "value1");
map.set(key2, "value2");
console.log(map.get(key1)); // "value1"
console.log(map.get(key2)); // "value2"
🛑`Map` хранит порядок ключей
В объекте
{} порядок ключей не гарантируется (особенно для числовых ключей). const obj = { 2: "two", 1: "one", 3: "three" };
console.log(Object.keys(obj)); // ["1", "2", "3"] (порядок числовых ключей изменился!)Пример с
Map const map = new Map();
map.set(2, "two");
map.set(1, "one");
map.set(3, "three");
console.log([...map.keys()]); // [2, 1, 3] (порядок сохраняется!)
🛑`Map` быстрее при частых добавлениях/удалениях
Объекты
{} оптимизированы для хранения структуры данных, но операции delete и Object.keys(obj).length могут быть медленными, потому что движок JavaScript выполняет дополнительные проверки.Разница в скорости
В
Map операции .set(), .get(), .delete() выполняются быстрее.В объекте
{} delete obj[key] может работать медленнее, так как JavaScript оптимизирует объекты для других целей.🛑У `Map` есть удобные методы
Объект
{} не имеет встроенных методов для работы с ключами и значениями. Чтобы, например, узнать размер объекта, приходится использовать Object.keys(obj).length.const map = new Map();
map.set("a", 1);
map.set("b", 2);
console.log(map.size); // 2
console.log(map.has("a")); // true
console.log(map.delete("b")); // true (удалит "b")
В объекте
{}const obj = { a: 1, b: 2 };
console.log(Object.keys(obj).length); // 2 (нужно вызывать Object.keys())
console.log(obj.hasOwnProperty("a")); // true (менее удобный синтаксис)
delete obj.b; // Удаление ключа🛑`Map` не имеет проблем с прототипами
В объекте
{} могут быть неожиданные проблемы, если ключ совпадает с именем встроенного метода.const obj = {};
console.log(obj.toString); // [Function: toString] (унаследованное свойство!)
console.log(obj["toString"]); // [Function: toString] (может вызвать баги)Чтобы обойти это, приходится делать так
const obj = Object.create(null); // Теперь у объекта нет прототипа
obj.toString = "custom";
console.log(obj.toString); // "custom"
В
Map таких проблем нетconst map = new Map();
map.set("toString", "custom");
console.log(map.get("toString")); // "custom" (никаких багов!)
🔥3💯1
🧐 Откуда тег b или strong берут свою "жирность"?
Жирность задаётся стилями по умолчанию, встроенными в браузер, чаще всего через CSS-свойство font-weight. Если нужно — можно переопределить стили вручную.
Жирность задаётся стилями по умолчанию, встроенными в браузер, чаще всего через CSS-свойство font-weight. Если нужно — можно переопределить стили вручную.
🔥2⚡1💯1🆒1
🧐Зачем нужен eslint?
ESLint – это инструмент для автоматического анализа и исправления кода в JavaScript и TypeScript. Он помогает разработчикам следовать единым стилям кодирования, находить ошибки и предотвращать баги ещё до запуска кода.
🔫Почему ESLint полезен?
Без линтера код может быть неаккуратным и содержать ошибки, которые сложно отловить.
🔫Проблемы без ESLint
Разные стили написания кода
Пропущенные точки с запятой или лишние пробелы
Неиспользуемые переменные
Ошибки, которые не выявляются во время компиляции (например,
🔫Решение с ESLint:
Автоматически находи ошибки и предупреждения
Подсказывает лучшие практики
Поддерживает кастомные правила
Работает в IDE и CI/CD (автоматическая проверка)
🛑Как ESLint работает?
ESLint использует набор правил, которые проверяют код. Если код нарушает эти правила – линтер выдаёт предупреждение или ошибку.
Пример исправленного кода (ESLint fix)
🛑Как установить и настроить ESLint?
Установка
Создание конфига
Пример
Запуск проверки кода
Автоматическое исправление ошибок
🛑ESLint в IDE (VS Code, WebStorm)
Чтобы ESLint работал в VS Code, установите расширение ESLint и включите
🛑ESLint в CI/CD (автоматическая проверка на сервере)
В проектах ESLint можно запускать в GitHub Actions, Jenkins, GitLab CI и других CI/CD системах, чтобы не допускать ошибок в
Теперь перед коммитом можно запускать:
ESLint – это инструмент для автоматического анализа и исправления кода в JavaScript и TypeScript. Он помогает разработчикам следовать единым стилям кодирования, находить ошибки и предотвращать баги ещё до запуска кода.
🔫Почему ESLint полезен?
Без линтера код может быть неаккуратным и содержать ошибки, которые сложно отловить.
🔫Проблемы без ESLint
Разные стили написания кода
Пропущенные точки с запятой или лишние пробелы
Неиспользуемые переменные
Ошибки, которые не выявляются во время компиляции (например,
undefined переменные) 🔫Решение с ESLint:
Автоматически находи ошибки и предупреждения
Подсказывает лучшие практики
Поддерживает кастомные правила
Работает в IDE и CI/CD (автоматическая проверка)
🛑Как ESLint работает?
ESLint использует набор правил, которые проверяют код. Если код нарушает эти правила – линтер выдаёт предупреждение или ошибку.
function sayHello(name) {
console.log("Hello, " + name)
}
sayHello("John")Пример исправленного кода (ESLint fix)
function sayHello(name) {
console.log(`Hello, ${name}`);
}
sayHello("John");🛑Как установить и настроить ESLint?
Установка
npm install eslint --save-dev
Создание конфига
npx eslint --init
Пример
.eslintrc.js (настройки ESLint) module.exports = {
env: {
browser: true,
es6: true,
},
extends: [
"eslint:recommended", // Базовые рекомендации
"plugin:vue/vue3-recommended" // Рекомендации для Vue
],
rules: {
"no-unused-vars": "warn", // Предупреждать о неиспользуемых переменных
"semi": ["error", "always"], // Обязательные точки с запятой
"quotes": ["error", "double"], // Только двойные кавычки
},
};Запуск проверки кода
npx eslint myfile.js
Автоматическое исправление ошибок
npx eslint myfile.js --fix
🛑ESLint в IDE (VS Code, WebStorm)
Чтобы ESLint работал в VS Code, установите расширение ESLint и включите
"editor.codeActionsOnSave" "editor.codeActionsOnSave": {
"source.fixAll.eslint": true
}🛑ESLint в CI/CD (автоматическая проверка на сервере)
В проектах ESLint можно запускать в GitHub Actions, Jenkins, GitLab CI и других CI/CD системах, чтобы не допускать ошибок в
main ветку. "scripts": {
"lint": "eslint src --fix"
}Теперь перед коммитом можно запускать:
npm run lint
⚡2🔥2🆒1
Forwarded from Frontend | Вопросы собесов
Делегирование событий (Event Delegation) — это техника, при которой мы не навешиваем обработчик на каждый элемент, а ставим один обработчик на родителя и отслеживаем события его потомков.
Обычный способ (без делегирования)
Если у нас есть 10 кнопок, мы можем повесить обработчик на каждую
document.querySelectorAll("button").forEach((btn) => {
btn.addEventListener("click", () => {
console.log("Кнопка нажата");
});
});Если кнопок 1000, это создаст 1000 обработчиков, что неэффективно.
Если кнопки добавляются динамически (например, из API), обработчик на новые кнопки не сработает.
Вместо того чтобы вешать обработчик на каждую кнопку, ставим один обработчик на родительский элемент и проверяем, кто вызвал событие:
document.getElementById("container").addEventListener("click", (event) => {
if (event.target.tagName === "BUTTON") {
console.log("Кнопка нажата:", event.target.textContent);
}
});Если мы добавляем кнопки динамически, обработчик все равно будет работать
document.getElementById("container").addEventListener("click", (event) => {
if (event.target.classList.contains("btn")) {
console.log("Нажата кнопка:", event.target.textContent);
}
});
// Добавляем новую кнопку динамически
setTimeout(() => {
const newButton = document.createElement("button");
newButton.classList.add("btn");
newButton.textContent = "Новая кнопка";
document.getElementById("container").appendChild(newButton);
}, 2000);Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3🆒2⚡1
🤔 Что такое прототипы в JavaScript
- Прототипы позволяют объектам в JavaScript наследовать свойства и методы друг от друга.
- Прототипное наследование является механизмом, позволяющим объектам использовать свойства и методы, определенные в других объектах.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
- Прототипное наследование является механизмом, позволяющим объектам использовать свойства и методы, определенные в других объектах.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🔥4🆒2💯1
🤔 Для чего нуден key при работе со списками?
В React при рендере списков (например, через
🚩Почему `key` важен?
React использует виртуальный DOM и при обновлении сравнивает новый список с предыдущим.
Без
Это может привести к неожиданному поведению, например, сбросу состояния или неправильному рендеру.
🚩Как использовать `key` правильно?
🚩Что будет без `key`?
Если не указать
Кроме того, при изменении списка возможны проблемы с перерисовкой
Ставь 👍 и забирай 📚 Базу знаний
В React при рендере списков (например, через
.map()) каждому элементу необходимо передавать уникальный key. Это помогает React оптимизировать перерисовку и правильно отслеживать изменения в списке. 🚩Почему `key` важен?
React использует виртуальный DOM и при обновлении сравнивает новый список с предыдущим.
Без
key React не понимает, какие элементы изменились, удалились или добавились. Это может привести к неожиданному поведению, например, сбросу состояния или неправильному рендеру.
🚩Как использовать `key` правильно?
const users = ["Alice", "Bob", "Charlie"];
function UserList() {
return (
<ul>
{users.map((user, index) => (
<li key={user}>{user}</li> // Хорошо, если `user` уникален
))}
</ul>
);
}
🚩Что будет без `key`?
Если не указать
key, React выдаст предупреждение: Warning: Each child in a list should have a unique "key" prop.
Кроме того, при изменении списка возможны проблемы с перерисовкой
{users.map((user, index) => (
<input key={index} defaultValue={user} />
))}Ставь 👍 и забирай 📚 Базу знаний
💯3🔥2
🤔 Как бы повернул блок на 45 градусов?
Чтобы повернуть блок на 45 градусов, используется свойство CSS
🚩Пример использования
🚩Объяснение
Основной синтаксис
🟠Угол поворота элемента. Может быть положительным или отрицательным значением в градусах (deg), радианах (rad), градусах (grad) или оборотах (turn).
🟠Параметры
Угол поворота элемента. В данном случае элемент поворачивается на 45 градусов по часовой стрелке.
🚩Пояснение
🟠Свойство `transform`
Позволяет применять различные визуальные эффекты к элементу, такие как вращение, масштабирование и смещение.
🟠Функция
🚩Использование в реальных проектах
🟠Вращение элементов
Вращение элементов может использоваться для создания интересных визуальных эффектов, таких как поворот иконок, изображений или блоков текста.
🟠Анимация
В комбинации с анимацией (
Ставь 👍 и забирай 📚 Базу знаний
Чтобы повернуть блок на 45 градусов, используется свойство CSS
transform с функцией rotate. Это свойство позволяет применять различные трансформации к элементам, включая вращение, масштабирование, смещение и наклон.🚩Пример использования
.rotated-box {
width: 100px;
height: 100px;
background-color: lightblue;
transform: rotate(45deg);
}🚩Объяснение
Основной синтаксис
🟠Угол поворота элемента. Может быть положительным или отрицательным значением в градусах (deg), радианах (rad), градусах (grad) или оборотах (turn).
transform: rotate(угол);
🟠Параметры
Угол поворота элемента. В данном случае элемент поворачивается на 45 градусов по часовой стрелке.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
.rotated-box {
width: 100px;
height: 100px;
background-color: lightblue;
transform: rotate(45deg);
}
</style>
</head>
<body>
<div class="rotated-box"></div>
</body>
</html>
🚩Пояснение
🟠Свойство `transform`
Позволяет применять различные визуальные эффекты к элементу, такие как вращение, масштабирование и смещение.
🟠Функция
rotate
Используется для вращения элемента на заданный угол. Положительные значения поворачивают элемент по часовой стрелке, отрицательные — против часовой стрелки.🚩Использование в реальных проектах
🟠Вращение элементов
Вращение элементов может использоваться для создания интересных визуальных эффектов, таких как поворот иконок, изображений или блоков текста.
🟠Анимация
В комбинации с анимацией (
@keyframes и transition), вращение может создавать динамичные и интерактивные пользовательские интерфейсы.Ставь 👍 и забирай 📚 Базу знаний
🔥4💯2⚡1🆒1
🛑Какие есть способы автоматизации в React?
- Сборка через Create React App, Vite или Next.js.
- Тестирование через Jest, React Testing Library, Cypress.
- Линтинг и форматирование через ESLint, Prettier.
- Документирование через Storybook.
- CI/CD через GitHub Actions, GitLab CI и др.
Ставь 👍
Забирай 📚 Базу знаний
- Сборка через Create React App, Vite или Next.js.
- Тестирование через Jest, React Testing Library, Cypress.
- Линтинг и форматирование через ESLint, Prettier.
- Документирование через Storybook.
- CI/CD через GitHub Actions, GitLab CI и др.
Ставь 👍
Забирай 📚 Базу знаний
Telegram
Frontend | Вопросы собесов
👾 1429 вопросов собесов на Frontend Developer
🔒 База реальных собесов
🔒 База тестовых заданий
👾 Список менторов
🖥 Frontend
├ Вакансии
├ LeetCode ответы
└ Тесты
🖥 Тестировщик
├ Вопросы собесов
├ Вакансии
└ Тесты
🖥 Python
├ Вопросы собесов
├ Вакансии…
🔒 База реальных собесов
🔒 База тестовых заданий
👾 Список менторов
🖥 Frontend
├ Вакансии
├ LeetCode ответы
└ Тесты
🖥 Тестировщик
├ Вопросы собесов
├ Вакансии
└ Тесты
🖥 Python
├ Вопросы собесов
├ Вакансии…
🔥3💯2🆒2
🛑Чем заменить ES Modules / require?
- import() — динамический импорт.
- Сборщики: Webpack, Vite, Rollup.
- Системы типа AMD, UMD, IIFE (устаревшие, но рабочие).
- import() — динамический импорт.
- Сборщики: Webpack, Vite, Rollup.
- Системы типа AMD, UMD, IIFE (устаревшие, но рабочие).
🔥4🆒3
💯 Как происходит tostring?
Метод
🛑
Числа, строки, булевы значения,
Для примитивных типов
Но
Поэтому для них лучше использовать
🛑
Для массивов
🛑`toString()` у объектов
По умолчанию метод
Если нужно другое поведение, можно переопределить
🛑`toString()` у классов
Можно переопределять метод
🛑`toString()` у функций
Функции тоже имеют метод
Для стрелочных функций
🛑Использование
Метод
.toString() используется для преобразования значения в строку. Он есть у всех объектов в JavaScript, потому что наследуется от Object.prototype. Однако, его поведение зависит от типа данных. 🛑
toString() у примитивов Числа, строки, булевы значения,
null, undefinedДля примитивных типов
toString() работает просто — возвращает строковое представление значения:console.log((123).toString()); // "123"
console.log(true.toString()); // "true"
console.log(false.toString()); // "false"
console.log((3.14).toString()); // "3.14"
Но
null и undefined не имеют метода toString() и вызов приведёт к ошибкеconsole.log(null.toString()); // ❌ Ошибка: Cannot read properties of null
console.log(undefined.toString()); // ❌ Ошибка
Поэтому для них лучше использовать
String()console.log(String(null)); // "null"
console.log(String(undefined)); // "undefined"
🛑
toString() у массивов Для массивов
toString() преобразует их в строку, разделяя элементы запятойconsole.log([1, 2, 3].toString()); // "1,2,3"
console.log(["яблоко", "банан"].toString()); // "яблоко,банан"
console.log([].toString()); // "" (пустая строка)
🛑`toString()` у объектов
По умолчанию метод
toString() у объекта возвращает строку вида [object Object]const obj = { a: 1, b: 2 };
console.log(obj.toString()); // "[object Object]"Если нужно другое поведение, можно переопределить
toString() в объектеconst user = {
name: "Иван",
age: 30,
toString() {
return `Имя: ${this.name}, Возраст: ${this.age}`;
}
};
console.log(user.toString()); // "Имя: Иван, Возраст: 30"🛑`toString()` у классов
Можно переопределять метод
toString() в классахclass Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
toString() {
return ${this.name} (${this.age} лет);
}
}
const person = new Person("Анна", 25);
console.log(person.toString()); // "Анна (25 лет)"
🛑`toString()` у функций
Функции тоже имеют метод
toString(), но он возвращает их исходный кодfunction hello() {
return "Привет!";
}
console.log(hello.toString());
// "function hello() { return 'Привет!'; }"Для стрелочных функций
const sum = (a, b) => a + b;
console.log(sum.toString());
// "(a, b) => a + b"
🛑Использование
// "123"вместо происходит tosЛучше использовать
String(значение), потому что toString() не работает на null и undefinedconsole.log(String(null)); // "null"
console.log(String(undefined)); // "undefined"
console.log(String(42)); // "42"
console.log(String({ a: 1 })); // "[object Object]"
🔥5⚡3💯2🆒1
🛑Как Autoprefixer понимает, где поставить префиксы?
Он ориентируется на базу данных Can I Use и список браузеров, указанный в конфигурации проекта. На основе этих данных он определяет, какие свойства и где требуют префиксов.
Он ориентируется на базу данных Can I Use и список браузеров, указанный в конфигурации проекта. На основе этих данных он определяет, какие свойства и где требуют префиксов.
🔥7💯2⚡1
🛑 Как происходит процесс утечки?
Обычно это происходит, когда ссылки на объекты сохраняются, даже если они больше не нужны: в глобальных переменных, замыканиях, обработчиках событий, коллекциях (Map, Set) и таймерах. GC не может очистить объект, пока есть ссылка на него.
Обычно это происходит, когда ссылки на объекты сохраняются, даже если они больше не нужны: в глобальных переменных, замыканиях, обработчиках событий, коллекциях (Map, Set) и таймерах. GC не может очистить объект, пока есть ссылка на него.
🔥7⚡2💯1🆒1
🛑Что делает и для чего нужна функция Function.prototype.bind?
Метод bind позволяет создать новую функцию с жёстко привязанным контекстом (this) и при необходимости — предустановленными аргументами. Полезен при передаче методов в колбэки, где может потеряться контекст.
Метод bind позволяет создать новую функцию с жёстко привязанным контекстом (this) и при необходимости — предустановленными аргументами. Полезен при передаче методов в колбэки, где может потеряться контекст.
🔥6💯2⚡1🆒1
🛑Что происходит в момент запроса в браузере?
Браузер выполняет преобразование URL в IP через DNS, устанавливает соединение с сервером, отправляет HTTP-запрос и получает ответ, после чего обрабатывает данные и рендерит страницу.
🔥6💯3🆒1
🎓Hi, I'm a React ,NodeJS ,NextJS
developer.
🛑I've worked on real projects, I have 3 years of experience.
🫡For questions @Whults_14
developer.
🛑I've worked on real projects, I have 3 years of experience.
🫡For questions @Whults_14
🔥5🆒5💯2⚡1