JS собеседования – Telegram
JS собеседования
470 subscribers
108 photos
108 links
Подготовка к собеседованиям по JavaScript

Еще больше разобранных вопросов на сайте https://frontview-it.ru

Frontend собеседования - @frontview_it
Frontend работа - @frontview_vacancies
Все IT вакансии - @frontview_all_vacancies
Download Telegram
Метод map применяет функцию к каждому элементу массива, возвращая новый массив с результатами. Метод filter создает новый массив, включая только те элементы, которые удовлетворяют условию в переданной функции. Метод reduce последовательно обрабатывает элементы массива, накапливая результат на основе переданной функции и начального значения.

✈️ JS собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
👉 localStorage и sessionStorage — это механизмы хранения данных в браузере, позволяющие сохранять пары ключ-значение. Данные в localStorage сохраняются даже после закрытия браузера и не имеют срока действия, пока не будут удалены вручную. sessionStorage работает аналогично, но данные сохраняются только на время сессии и удаляются при закрытии вкладки или браузера.


localStorage.setItem('key', 'value'); // Сохранение данных
const data = localStorage.getItem('key'); // Получение данных


Оба хранилища доступны только в рамках одного источника (протокол, домен, порт) и поддерживают только строковые данные. Для работы с объектами необходимо использовать JSON.stringify и JSON.parse.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ JS собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61
Event Bubbling — это процесс, при котором событие сначала обрабатывается на целевом элементе, а затем всплывает вверх по дереву DOM к его родительским элементам. Event Capturing — это противоположный процесс, при котором событие сначала обрабатывается на верхнем уровне дерева DOM и затем погружается вниз до целевого элемента.

✈️ JS собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
🟢Hoisting — это механизм, при котором объявления переменных и функций перемещаются вверх своей области видимости перед выполнением кода. Для переменных, объявленных через var, hoisting поднимает только объявление, но не инициализацию, что может привести к undefined.


console.log(x); // undefined, так как объявление поднято, но не значение
var x = 5;

foo(); // "Hello", функция поднята полностью
function foo() {
console.log("Hello");
}


Для let и const hoisting также происходит, но доступ к переменным до объявления вызывает ошибку.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ JS собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51
Тернарный оператор позволяет записать условное выражение в компактной форме: условие ? выражение1 : выражение2. Если условие истинно, выполняется выражение1, иначе — выражение2. Он часто используется для присваивания значений или возврата результатов в зависимости от условия.

✈️ JS собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41
Объект в JS — это коллекция пар ключ-значение, где ключи являются строками (или символами), а значения могут быть любого типа. Объекты используются для хранения структурированных данных.

Добавить свойство в объект можно несколькими способами. Через точечную нотацию:


const obj = {};
obj.name = "John"; // Добавление свойства name


Или через квадратные скобки:


obj["age"] = 30; // Добавление свойства age


Также свойства можно добавить при создании объекта:


const obj = { name: "John", age: 30 };


Эти способы позволяют динамически изменять структуру объекта.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ JS собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71
🔴Для преобразования строки в число в JS можно использовать несколько методов.

Функция Number() преобразует строку в число, включая числа с плавающей точкой:


const num = Number("42"); // 42


Метод parseInt() преобразует строку в целое число, игнорируя нечисловые символы:


const int = parseInt("42px"); // 42


Метод parseFloat() преобразует строку в число с плавающей точкой:


const float = parseFloat("42.5"); // 42.5


Также можно использовать унарный оператор +:


const num = +"42"; // 42


Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ JS собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
event.preventDefault() отменяет стандартное поведение элемента, например, отправку формы или переход по ссылке. event.stopPropagation() останавливает всплытие события по DOM-дереву, предотвращая его обработку родительскими элементами.


document.querySelector('a').addEventListener('click', function(event) {
event.preventDefault(); // Отменяет переход по ссылке
event.stopPropagation(); // Останавливает всплытие
});


Эти методы полезны для управления поведением событий и предотвращения нежелательных действий.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ JS собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
▶️Объектная модель документа (DOM) — это программный интерфейс для HTML и XML документов, который представляет структуру документа в виде дерева объектов. Каждый узел этого дерева соответствует элементу, атрибуту или тексту на странице.


const element = document.getElementById('example');
element.textContent = 'Hello, DOM!';


DOM позволяет изменять структуру, стили и содержимое документа динамически с помощью JavaScript. Это основа для интерактивных веб-приложений.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ JS собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
▶️Promise.all принимает массив промисов и возвращает новый промис, который выполнится, когда все переданные промисы завершатся успешно. Если хотя бы один промис завершится с ошибкой, весь Promise.all также завершится с ошибкой.


Promise.all([promise1, promise2])
.then(results => console.log(results));


Promise.race возвращает промис, который завершается, как только завершается первый промис из массива, независимо от его результата (успех или ошибка).


Promise.race([promise1, promise2])
.then(result => console.log(result));


Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ JS собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
NaN (Not a Number) — это значение, представляющее результат неопределенной или невыполнимой математической операции, например деления нуля на ноль или попытки преобразования строки в число.

Провер
ка на NaN:
Использовать оператор строгого равенства (===) для проверки на NaN нельзя, так как NaN не равно ничему, включая себя. Вместо этого применяют функцию isNaN() или Number.isNaN().


const value = NaN;
console.log(isNaN(value)); // true
console.log(Number.isNaN(value)); // true


Разница между функциями: isNaN() пытается преобразовать значение в число перед проверкой, а Number.isNaN() проверяет, является ли значение именно NaN без преобразования.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ JS собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Поверхностное копирование создает новый объект/массив, но вложенные структуры остаются ссылками. Глубокое копирование рекурсивно клонирует все вложенные элементы.

Поверхностное копирование:

const arr = [1, 2, 3];
const arrCopy = [...arr]; // или arr.slice()

const obj = { a: 1, b: 2 };
const objCopy = { ...obj }; // или Object.assign({}, obj)


Глубокое копирование:

const deepCopy = JSON.parse(JSON.stringify(obj)); // Не поддерживает функции и спец. типы
const structuredCloneCopy = structuredClone(obj); // Современный способ


Метод structuredClone работает с циклическими ссылками, но не копирует функции или прототипы.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ JS собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9