React — это библиотека для JavaScript, которая используется для создания пользовательских интерфейсов, особенно для одностраничных приложений (SPA). React позволяет разработчикам строить интерфейсы, разбивая их на компоненты, которые могут повторно использоваться и управляться независимо.
1. Компонентный подход: React основывается на концепции компонентов. Компоненты — это независимые, переиспользуемые блоки кода, которые могут содержать как логику, так и визуальные элементы. Это позволяет организовать код более структурировано и поддерживать его легче.
2. JSX (JavaScript XML): React использует синтаксис JSX, который позволяет писать HTML-подобный код внутри JavaScript. Это упрощает создание компонентов, делая код более читаемым и понятным.
Пример простого компонента на JSX:
function HelloWorld() {
return <h1>Привет, мир!</h1>;
}
3. Управление состоянием: React позволяет управлять состоянием компонентов (например, текущими значениями форм, статусами запросов и т.д.). Это можно сделать с помощью хука
useState или с помощью других подходов, таких как Redux или Context API для более сложных приложений.4. Эффективное обновление интерфейса: React использует виртуальный DOM, что позволяет эффективно обновлять интерфейс. Вместо прямого изменения реального DOM, React создает его виртуальную копию и обновляет только те части, которые изменились, что значительно ускоряет производительность.
5. Экосистема: React имеет богатую экосистему библиотек и инструментов (например, React Router для маршрутизации, Redux для управления состоянием), что позволяет легко строить сложные приложения.
- Одностраничные приложения (SPA): React идеально подходит для создания современных веб-приложений, которые требуют динамического обновления содержимого без повторной загрузки страниц.
- Мобильные приложения: С помощью React Native, расширения для React, разработчики могут создавать нативные мобильные приложения для iOS и Android, используя тот же подход компонентного программирования.
- Интерактивные пользовательские интерфейсы: React может быть использован для разработки сложных интерфейсов, таких как панели управления, системы управления контентом или любые другие приложения, которые требуют высокой интерактивности.
Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям тут 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2
TypeScript — это язык программирования, разработанный Microsoft, который является надмножеством JavaScript. Это означает, что любой корректный код на JavaScript также является корректным кодом на TypeScript. TypeScript добавляет статическую типизацию и другие возможности, которые упрощают разработку и поддержку больших приложений.
1. Статическая типизация: TypeScript позволяет задавать типы переменным, функциям и объектам, что помогает выявлять ошибки на этапе компиляции, а не во время выполнения. Это делает код более надежным и предсказуемым.
2. Улучшенная поддержка IDE: Типы в TypeScript обеспечивают лучшее автодополнение, рефакторинг и навигацию по коду в современных средах разработки (IDE), таких как Visual Studio Code.
3. Современные функции: TypeScript поддерживает многие современные функции JavaScript (такие как async/await, arrow functions и т.д.) и добавляет новые, такие как интерфейсы, перечисления, обобщения и декораторы.
4. Поддержка OOP: TypeScript имеет более развитую поддержку объектно-ориентированного программирования (OOP), включая классы, наследование и инкапсуляцию.
5. Упрощение работы в больших проектах: Статическая типизация и более строгие правила значительно упрощают поддержку и развитие крупных кодовых баз, так как позволяют избежать многих распространенных ошибок.
6. Совместимость с JavaScript: TypeScript компилируется в стандартный JavaScript, что означает, что его можно использовать в любом проекте, использующем JavaScript, без необходимости изменения инфраструктуры.
7. Сообщество и экосистема: TypeScript быстро наращивает популярность, и многие библиотеки и фреймворки (например, Angular) уже активно используют его, что создает богатую экосистему инструментов и ресурсов.
TypeScript предоставляет множество преимуществ для разработчиков, особенно в контексте больших и сложных приложений. Его статическая типизация и поддержка современных функций делают его мощным инструментом для повышения качества кода и упрощения его поддержки.
Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям тут 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥1
<!DOCTYPE> — это декларация, которая используется в HTML для указания типа документа и версии HTML, в которой написан веб-страница. Она размещается в самом начале HTML-документа перед тегом <html>. 1. Определение режима рендеринга: DOCTYPE сообщает браузеру, как интерпретировать и отображать HTML-код. Он позволяет браузеру включать режимы рендеринга, такие как "строгий" (standards mode) или "потерянный" (quirks mode). В строгом режиме браузеры следуют стандартам W3C более точно, тогда как в потерянном режиме они пытаются имитировать поведение старых версий браузеров.
2. Улучшение совместимости: Указание соответствующего DOCTYPE помогает гарантировать, что страница будет правильно отображаться в разных браузерах и на разных устройствах, минимизируя риск появления неожиданных отображений из-за различий в интерпретации HTML.
3. Поддержка стандартов: Используя корректный DOCTYPE, разработчики указывают, что они следуют стандартам и рекомендациям W3C, что способствует более качественной разработке веб-страниц.
Наиболее распространенные DOCTYPE для HTML:
- Для HTML5:
<!DOCTYPE html>
- Для HTML4.01 (строгий режим):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
- Для XHTML 1.0 (строгий режим):
<!DOCTYPE XHTML 1.0 Strict">
Использование DOCTYPE является важной практикой при разработке веб-страниц, так как оно обеспечивает правильное отображение контента и способствует кросс-браузерной совместимости. Для современных веб-приложений рекомендуется использовать DOCTYPE HTML5, так как он максимально упрощен и покрывает большинство потребностей веб-разработки.
Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям тут 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥2
В JavaScript существует несколько основных типов данных, которые можно классифицировать на примитивные и сложные (объектные). Вот как они делятся:
1. String: Строки используются для представления текстовых данных. Они могут быть заключены в одинарные ('...'), двойные ("...") или косые наклонные (`...`) кавычки.
let message = "Hello, World!";
2. Number: Числа в JavaScript могут быть как целыми, так и дробными. JavaScript не имеет отдельного типа для целых и дробных чисел; все они являются типом
Number.
let integer = 42;
let float = 3.14;
3. Boolean: Этот тип данных может принимать два значения:
true или false. Он часто используется для логических операций и условных выражений.
let isTrue = true;
4. Null: Этот тип представляет собой намеренное отсутствие значения. Его значение всегда является
null.
let emptyValue = null;
5. Undefined: Этот тип автоматически присваивается переменной, если ей не было дано значение. Он также возвращается, если функции не возвращают значения.
let undefinedValue;
6. Symbol: Этот тип данных был введен в ES6 и используется для создания уникальных идентификаторов. Каждый символ уникален и защищен от конфликтов.
const uniqueId = Symbol('id');
7. BigInt: Этот тип данных был добавлен в ES11 (ES2020) и используется для представления целых чисел, которые превышают пределы типа
Number. BigInt создается добавлением суффикса n к целому числу.
let bigIntValue = 123456789012345678901234567890n;
1. Object: Это основа для создания более сложных структур данных. Объекты могут содержать множество пар ключ-значение, а также методы.
let person = {
name: "Alice",
age: 30
};
2. Array: Массивы являются специализированным типом объектов, которые используются для хранения упорядоченных коллекций данных. Массивы можно рассматривать как объекты со свойством
length и числовыми индексами.
let fruits = ["apple", "banana", "cherry"];
3. Function: Функции в JavaScript также считаются объектами и могут храниться в переменных, передаваться как аргументы и возвращаться из других функций.
function greet(name) {
return `Hello, ${name}!`;
}
4. Date, RegExp, Map, Set и другие: JavaScript также предоставляет встроенные объекты для работы с датами, регулярными выражениями, коллекциями и другими структурами данных.
Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям тут 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1🔥1
Селекторы в CSS используются для выбора элементов на веб-странице, к которым применяются стили. Существует несколько типов селекторов, и каждый из них работает по определенным правилам. Вот основные из них:
1. Селекторы по тегам: Выбирают все элементы определённого типа.
p {
color: blue;
}
Этот селектор применяет голубой цвет ко всем абзацам на странице.
2. Селекторы по классам: Выбирают элементы, имеющие указанный класс. Классы обозначаются точкой.
.highlight {
background-color: yellow;
}
Этот селектор применяет жёлтый фон ко всем элементам с классом
highlight.3. Селекторы по идентификаторам: Выбирают элемент с конкретным идентификатором. Идентификаторы обозначаются решёткой (#).
#header {
font-size: 24px;
}
Этот селектор применяет стиль к элементу с идентификатором
header.4. Групповые селекторы: Позволяют применять одни и те же стили к нескольким элементам.
h1, h2, h3 {
font-family: Arial, sans-serif;
}
Здесь задан один стиль для заголовков h1, h2 и h3.
5. Селекторы потомков: Выбирают элементы, которые являются потомками другого элемента.
div p {
color: red;
}
Этот селектор применяет красный цвет ко всем абзацам, находящимся внутри div.
6. Селекторы потомков и прямых потомков: Используются для выбора элементов, которые являются прямыми потомками другого элемента.
ul > li {
list-style-type: none;
}
Этот селектор применяет стиль к элементам
li, которые являются прямыми потомками элемента ul.7. Соседние селекторы: Выбирают элементы, которые идут сразу после другого элемента.
h1 + p {
margin-top: 0;
}
Этот селектор применяется к первому абзацу (p), который идет сразу после заголовка (h1).
8. Селекторы по атрибутам: Выбирают элементы на основе наличия и значения атрибутов.
input[type="text"] {
border: 1px solid #ccc;
}
Этот селектор применяет стиль ко всем
input, у которых атрибут type равен text.9. Псевдоклассы: Определяют состояние элемента.
a:hover {
color: green;
}
Этот селектор применяет стиль к ссылкам, когда на них наводят курсор.
10. Псевдоэлементы: Позволяют стилизовать части элементов.
p::first-line {
font-weight: bold;
}
Этот селектор применяет жирное начертание к первой строке каждого абзаца.
Эти селекторы могут комбинироваться для более точного выбора элементов. Например, можно создать селектор, который сочетает класс с селектором по тегу:
div.highlight {
border: 2px solid red;
}
Это применит стиль только к
div, которые имеют класс highlight.Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям тут 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍2
В React компоненты — это основные строительные блоки пользовательского интерфейса. Компоненты позволяют разрабатывать интерфейсы, разбивая их на отдельные части, что делает код более организованным, переиспользуемым и легче поддерживаемым.
Вот основные аспекты компонентов в React:
1. Определение и типы компонентов
Существует два основных типа компонентов в React:
- Классовые компоненты: Это компоненты, которые определяются с использованием классов JavaScript. Они могут содержать собственное состояние и методы жизненного цикла.
class MyComponent extends React.Component {
render() {
return <h1>Hello, World!</h1>;
}
}
- Функциональные компоненты: Это более простые компоненты, которые определяются как функции. С введением хуков в React 16.8 функциональные компоненты могут также управлять состоянием и жизненным циклом.
function MyComponent() {
return <h1>Hello, World!</h1>;
}
2. Состояние и свойства (props)
- Свойства (props): Свойства — это данные, передаваемые в компонент из его родительского компонента. Свойства используются для настройки поведения и отображения компонента.
function Greeting(props) {
return <h1>Hello, {props.name}!</h1>;
}
// Использование компонента с передачей свойства
<Greeting name="Alice" />
- Состояние (state): Состояние — это данные, которые управляются внутри самого компонента. Оно может изменяться в процессе работы приложения, что позволяет компоненту реагировать на пользовательские действия.
class Counter extends React.Component {
constructor(props) {
super(props);
this.state = { count: 0 };
}
increment = () => {
this.setState({ count: this.state.count + 1 });
};
render() {
return (
<div>
<p>Count: {this.state.count}</p>
<button onClick={this.increment}>Increment</button>
</div>
);
}
}
3. Жизненный цикл компонента
Компоненты в React проходят через несколько этапов, таких как монтаж, обновление и размонтирование. Классовые компоненты предоставляют специальные методы жизненного цикла, такие как
componentDidMount, componentDidUpdate, componentWillUnmount, которые позволяют выполнять код в определенный момент жизни компонента.Функциональные компоненты могут использовать хуки, такие как
useEffect, чтобы добиться аналогичного поведения.4. Переиспользование компонентов
Компоненты можно легко переиспользовать в разных частях приложения. Это позволяет разработчикам создавать более структурированные и модульные интерфейсы, что в свою очередь упрощает разработку и обслуживание.
5. Композиция компонентов
React поддерживает концепцию композиции компонентов, что позволяет создавать сложные интерфейсы, комбинируя более простые компоненты. Это достигается путем включения одних компонентов в другие.
function App() {
return (
<div>
<Header />
<Content />
<Footer />
</div>
);
}
Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям тут 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2
В JavaScript существуют три основных способа объявления переменных:
var, let и const. Каждое из этих ключевых слов имеет свои особенности и области применения.1.
var- Область видимости:
var имеет функциональную область видимости, что означает, что переменные, объявленные с помощью var, доступны внутри функции, в которой они были объявлены, или в глобальной области видимости, если объявлены вне функции.- Подъем переменной (hoisting): Переменные, объявленные с помощью
var, поднимаются к верхней части своей области видимости. Это означает, что можно обращаться к переменной до её фактической декларации, но она будет иметь значение undefined.
console.log(x); // undefined
var x = 5;
console.log(x); // 5
- Проблемы с искажением и конфликтами: Поскольку
var не имеет блочной области видимости, переменные могут перезаписываться, если они объявлены в пределах блока кода (например, внутри цикла).2.
let- Область видимости:
let имеет блочную область видимости, что означает, что переменная доступна только внутри блока, в котором она была объявлена (например, внутри фигурных скобок `{}`).
if (true) {
let y = 10;
console.log(y); // 10
}
console.log(y); // ReferenceError: y is not defined
- Подъем переменной: Переменные, объявленные с помощью
let, также поднимаются, но не могут быть использованы до того, как они были объявлены в коде — это называется «временной мертвой зоной» (temporal dead zone).
console.log(z); // ReferenceError: Cannot access 'z' before initialization
let z = 10;
- Переопределение: Нельзя повторно объявить переменную с тем же именем в одной и той же области видимости с помощью
let.3.
const- Область видимости: Как и
let, const имеет блочную область видимости.
if (true) {
const a = 20;
console.log(a); // 20
}
console.log(a); // ReferenceError: a is not defined
- Иммутируемость: Как следует из названия (от слова "constant"), когда переменная объявлена с помощью
const, значение этой переменной не может быть изменено (перезаписано). Однако следует помнить, что если переменная ссылается на объект или массив, всё равно можно изменять содержимое этого объекта или массива.
const b = 30;
// b = 40; // TypeError: Assignment to constant variable.
const arr = [1, 2, 3];
arr.push(4); // Это допустимо, массив теперь [1, 2, 3, 4]
- Подъем переменной:
const, как и let, также поднимается, но также находится в «временной мертвой зоне».Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям тут 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2
В TypeScript существуют следующие основные типы данных:
1. Простые типы:
-
number -
string -
boolean -
null -
undefined -
symbol -
bigint 2. Сложные типы:
-
array -
tuple -
object -
enum-
any-
void -
never3. Пользовательские типы:
-
type-
interfaceСтавь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям тут 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍2❤1
JSX (JavaScript XML) — это синтаксическое расширение для JavaScript, которое используется в React. Он позволяет писать разметку, похожую на HTML, прямо внутри JavaScript-кода. Это делает код более читаемым и простым для понимания, так как разработчики могут описывать интерфейс пользователя в привычном им формате.
Пример использования JSX:
const element = <h1>Привет, мир!</h1>;
В этом примере
element — это JSX-элемент, который будет представлен в виде дерева объектов React. JSX позволяет включать JavaScript-выражения в фигурных скобках {}, что дает возможность динамически генерировать разметку:
const name = 'Мир';
const element = <h1>Привет, {name}!</h1>;
При компиляции код на JSX трансформируется в функции JavaScript, которые используют React.createElement для создания элементов React. Например, следующий код на JSX:
const element = <h1>Привет, мир!</h1>;
Будет преобразован в нечто подобное:
const element = React.createElement('h1', null, 'Привет, мир!');
Важно отметить, что JSX не является обязательным для использования React. Можно писать компоненты React, используя чистый JavaScript, но использование JSX делает код более выразительным и упрощает создание пользовательских интерфейсов.
Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям тут 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤2🔥1
var, let и const — это ключевые слова, используемые для объявления переменных в JavaScript, но у них есть различные особенности:1. var:
- Доступен в функции или глобальной области видимости.
- Позволяет повторные объявления.
- Подвержен подъем (hoisting), переменная инициализируется значением
undefined до ее объявления.2. let:
- Доступен в блочной области видимости (например, внутри {}).
- Не позволяет повторные объявления в одной и той же области видимости.
- Также подвержен подъем, но не инициализируется до фактического объявления.
3. const:
- Также доступен в блочной области видимости.
- Не позволяет повторные объявления.
- Требует инициализации при объявлении и не может быть переопределен (но объекты и массивы, объявленные с
const, можно изменять).Таким образом,
let и const более предпочтительны для современного JavaScript благодаря блочной области видимости и предотвращению повторных объявлений.Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям тут 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2
Семантические элементы в HTML предназначены для улучшения структуры и понимания документа как для людей, так и для машин. Они:
1. Улучшение смыслового значения: Ясно описывают содержимое (например,
<header>, <footer>, <article> и <nav>), делая код более читаемым и понятным.2. SEO (поисковая оптимизация): Помогают поисковым системам лучше индексировать и понимать контент.
3. Доступность: Облегчают навигацию для вспомогательных технологий, таких как экранные считыватели, улучшая доступность для людей с ограниченными возможностями.
4. Структура документа: Способствуют более логичной и организованной разметке, что упрощает стилизацию и поддержание кода.
Использование семантических элементов приводит к более чистому и эффективному коду.
Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям тут 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4✍1👍1
Специфичность (или специфичность селекторов) в CSS — это способ определения, какой стиль применяется к элементу, когда несколько правил могут его касаться. Специфичность рассчитывается путем присвоения значений селекторам:
1. Атрибуты специфичности:
- Важность Inline-стилей: 1000 (например, style="...")
- Идентификаторы (id): 100 (например, #id)
- Классы, псевдоклассы и атрибуты: 10 (например,
.class, :hover, [type="text"])- Элементы и псевдоэлементы: 1 (например,
div, h1, ::before)2. Как рассчитывается:
- Специфичность представляется в виде трехзначного числа (a, b, c), где:
- a — количество Inline-стилей,
- b — количество id-селекторов,
- c — количество классов, псевдоклассов и элементов.
3. Пример:
- Селектор
#header .menu li имеет специфичность (0, 1, 2): 0 id, 1 класс (.menu), 2 элемента (li).- Селектор
div имеет специфичность (0, 0, 1).Правила с более высокой специфичностью имеют приоритет над более низкими.
Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям тут 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2
any — это специальный тип в TypeScript, который позволяет переменной принимать значения любого типа. Это значит, что с переменной, объявленной с типом any, можно выполнять любые операции, без проверки на совместимость типов.any:1. Импорт сторонних библиотек: Когда нет типов для сторонней библиотеки, и нужно временно обойти типизацию.
2. Постепенный переход на TypeScript: Если переписывается проект из JavaScript в TypeScript и нужно минимизировать количество ошибок на начальных этапах.
3. Неопределенные данные: Когда невозможно заранее знать тип данных (например, данные от API, которые могут иметь произвольную структуру).
any:- Если возможно, лучше использовать более конкретные типы или
unknown, так как это окупится лучшей типизацией и безопасностью в долгосрочной перспективе.Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям тут 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
Всплытие переменных (hoisting) — это поведение в JavaScript, при котором объявления переменных и функций поднимаются ("всплывают") в верхнюю часть их контекста выполнения (например, функции или глобального контекста) перед тем, как выполняется код.
При использовании
var объявления переменных всплывают, но не их инициализации. Это означает, что вы можете ссылаться на переменную до её фактического объявления, но она будет иметь значение undefined до момента, когда будет выполнено присвоение:
console.log(x); // undefined
var x = 5;
console.log(x); // 5
В данном примере компилятор фактически исполняет код как будто он выглядит так:
var x; // объявление переменной
console.log(x); // undefined
x = 5; // присваивание
console.log(x); // 5
Переменные, объявленные с помощью
let и const, также подлежат всплытию, но они имеют "временную мёртвую зону" (temporal dead zone), что означает, что доступ к ним до их декларации вызовет ошибку:
console.log(y); // ReferenceError: Cannot access 'y' before initialization
let y = 10;
console.log(y); // 10
Изначально код выполняется так, как будто переменная
y инициализирована, но всё равно доступ к ней запрещён до момента фактического объявления.Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям тут 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2👍1
В React компоненты можно разделить на два основных типа: функциональные и классовые. Вот основные различия между ними:
1. Объявление и синтаксис
- Функциональные компоненты:
Функциональные компоненты — это обычные JavaScript функции, которые принимают «props» (свойства) как аргумент и возвращают React-элементы. Синтаксис более простой и компактный.
const MyComponent = (props) => {
return <div>{props.message}</div>;
};
- Классовые компоненты:
Классовые компоненты создаются с помощью классов ES6, которые расширяют
React.Component. Они требуют метода render() для возврата JSX и могут содержать более сложную внутреннюю логику.
class MyComponent extends React.Component {
render() {
return <div>{this.props.message}</div>;
}
}
2. Состояние (state)
- Функциональные компоненты:
Ранее функциональные компоненты не могли иметь состояние, но начиная с React 16.8 и введения хуков (Hooks), функциональные компоненты могут использовать
useState, useReducer и другие хуки для управления состоянием.
import React, { useState } from 'react';
const MyComponent = () => {
const [count, setCount] = useState(0);
return <button onClick={() => setCount(count + 1)}>{count}</button>;
};
- Классовые компоненты:
Классовые компоненты могут иметь состояние, которое хранится в объекте
this.state, и состояние обновляется с помощью метода this.setState().
class MyComponent extends React.Component {
constructor(props) {
super(props);
this.state = { count: 0 };
}
increment = () => {
this.setState({ count: this.state.count + 1 });
};
render() {
return <button onClick={this.increment}>{this.state.count}</button>;
}
}
3. Жизненный цикл
- Функциональные компоненты:
С хуками функциональные компоненты могут использовать такие хуки, как
useEffect, чтобы управлять побочными эффектами и имитировать методы жизненного цикла классовых компонентов (например, componentDidMount, componentDidUpdate и componentWillUnmount).
import React, { useEffect } from 'react';
const MyComponent = () => {
useEffect(() => {
console.log("Компонент смонтирован");
return () => {
console.log("Компонент будет размонтирован");
};
}, []);
return <div>Hello World!</div>;
};
- Классовые компоненты:
Классовые компоненты имеют методы жизненного цикла, которые позволяют выполнять код в определенные моменты, такие как монтирование, обновление и размонтирование.
class MyComponent extends React.Component {
componentDidMount() {
console.log("Компонент смонтирован");
}
componentWillUnmount() {
console.log("Компонент будет размонтирован");
}
render() {
return <div>Hello World!</div>;
}
}
Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям тут 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2
Наследование стилей в CSS работает по следующему принципу:
1. Наследование: Некоторые свойства CSS, такие как
color, font-family и line-height, наследуются от родительских элементов к дочерним. Если дочерний элемент не имеет своего значения для этих свойств, он принимает значение от родителя.2. Не наследуемые свойства: Многие свойства, такие как
margin, padding и border, не наследуются. Дочерние элементы используют свои собственные значения, если они не заданы.3. Приоритет: При возникновении конфликта между наследуемыми стилями и прямо заданными стилями (например, в CSS-классах или инлайн-стилях) применяется правило "более специфичный селектор" или "последовательность". Так, если стиль задан на уровне элемента, он перекроет унаследованный стиль.
Наследование позволяет создавать иерархическую структуру стилей, упрощая управление внешним видом элементов.
Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям тут 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥1
1.
<header> — заголовок раздела.2.
<nav> — навигационные ссылки.3.
<article> — независимая единица контента.4.
<section> — тематический раздел документа.5.
<aside> — боковая информация.6.
<footer> — нижний колонтитул раздела.7.
<figure> — изображение или графический элемент.8.
<figcaption> — подпись к изображению.9.
<main> — основной контент страницы.10.
<time> — обозначение времени.Эти элементы помогают улучшить структуру и семантику HTML-документов.
Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям тут 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥1
null и undefined в JavaScript представляют собой два различных типа, которые используются для обозначения отсутствия значения, но имеют разные семантики.1. undefined: Данный тип автоматически назначается переменным, которые объявлены, но не инициализированы. Это также значение, возвращаемое функцией, если она ничего не возвращает.
let someVariable; // Объявлена переменная, но не инициализирована
console.log(someVariable); // Выведет: undefined
2. null: Это преднамеренное отсутствие значения. Программист явно назначает
null переменной, чтобы указать, что значение отсутствует.
let anotherVariable = null; // Переменная явно инициализирована null
console.log(anotherVariable); // Выведет: null
- Предназначение:
undefined используется системой для обозначения без значения, в то время как null используется разработчиком, чтобы показать отсутствие значения намеренно.В общем,
undefined сигнализирует о том, что значение не было установлено, а null указывает, что значение было сброшено или отсутствует по замыслу. Использование этих типов зависит от контекста и требований к дизайну кода.Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям тут 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2✍1
В функциональных компонентах React состояние создается и используется с помощью хука
useState. Этот хук позволяет добавлять состояние в функциональные компоненты, делая разработку более удобной и понятной.Пример создания и использования состояния
import React, { useState } from 'react';
const Counter = () => {
// Инициализация состояния с помощью useState
const [count, setCount] = useState(0); // count — текущее состояние, setCount — метод для его обновления
// Функция для увеличения счетчика
const increment = () => {
setCount(count + 1); // Обновляем состояние, увеличивая значение на 1
};
return (
<div>
<h1>Current Count: {count}</h1> {/* Отображаем текущее значение счетчика */}
<button onClick={increment}>Increment</button> {/* Кнопка для увеличения значения */}
</div>
);
};
export default Counter;
Объяснение кода:
1. Импорт useState:
- Хук
useState импортируется из React для управления состоянием.2. Инициализация состояния:
-
const [count, setCount] = useState(0); — здесь count хранит текущее значение состояния, а setCount — функция для его обновления. Начальное значение равно 0.3. Функция обновления состояния:
-
increment — функция, вызывающая setCount для увеличения count на 1.4. Возврат JSX:
- Внутри возвращаемого JSX отображается текущее значение
count и кнопка, которая вызывает функцию increment при нажатии.Используя
useState, состояние компонента можно легко управлять и обновлять, что позволяет создавать интерактивные и отзывчивые интерфейсы.Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям тут 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1
<head> в HTML-документе выполняет несколько важных функций. Он содержит метаданные и предоставляет браузеру информацию о документе, которая не отображается непосредственно на странице. Вот основные элементы, которые часто включаются в <head>:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"> <!-- Определяет кодировку документа -->
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- Обеспечивает адаптивность страницы на мобильных устройствах -->
<noscript>Document Title</noscript> <!-- Заголовок страницы, отображаемый на вкладке браузера -->
<link rel="stylesheet" href="styles.css"> <!-- Подключение CSS-стилей -->
<noscript src="noscript.js" defer></noscript> <!-- Подключение JavaScript-файла -->
</head>
<body>
<!-- Основное содержимое страницы -->
</body>
</html>
Основные функции
<head>:1. Метаданные: Содержит информацию о странице (например, описание, ключевые слова, автор).
2. Дополнительные ресурсы: Подключение CSS и JavaScript для стилизации и интерактивности.
3. Заголовок документа: Заголовок, который показывается в заголовке вкладки браузера.
Использование
<head> критически важно для правильной работы и оптимизации страницы.Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям тут 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥3
Контроль типов в TypeScript осуществляется во время компиляции с помощью статической типизации, что позволяет выявлять ошибки еще до выполнения программы. Это обеспечивает большую безопасность и предотвращает возможные ошибки при запуске кода. Основные принципы работы контроля типов в TypeScript:
Пример использования типов
// Определение интерфейса для пользователя
interface User {
name: string;
age: number;
}
// Функция, принимающая объект пользователя
function greet(user: User): string {
return `Hello, ${user.name}. You are ${user.age} years old.`;
}
// Корректный вызов функции
const user1: User = { name: "Alice", age: 30 };
console.log(greet(user1)); // Выведет: Hello, Alice. You are 30 years old.
// Ошибка типов при неверном вызове функции
// const user2: User = { name: "Bob" }; // Ошибка: свойство 'age' отсутствует.
Как работает контроль типов:
1. Статическая типизация:
- TypeScript проверяет типы данных на этапе компиляции. Если тип не соответствует ожиданиям, компилятор выдает ошибку.
2. Интерфейсы и типы:
- Позволяют описывать структуры данных и принуждают использовать их в соответствии с определением. Например, интерфейс
User требует наличия свойств name и age.3. Функции и параметры:
- Типы также могут быть указаны для аргументов функций, что предотвращает передачу некорректных данных. В примере выше функция
greet принимает только объекты, соответствующие интерфейсу User.4. Автопроверка:
- Компилятор TS сам проверяет код, выводя ошибки и предупреждения, если определенные условия не выполнены.
5. Инференция типов:
- TypeScript может автоматически определять типы, если они не указаны явно, основываясь на контексте.
Эта система контроля типов обеспечивает высокий уровень уверенности в том, что программа будет работать корректно, снижая риск ошибок на этапе выполнения.
Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям тут 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1