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

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

Frontend собеседования - @frontview_it
Frontend работа - @frontview_vacancies
Все IT вакансии - @frontview_all_vacancies
Download Telegram
SetInterval — функция, которая позволяет выполнять код с заданным интервалом времени. Она принимает два аргумента: функцию, которая будет выполняться, и интервал времени в миллисекундах между вызовами. Функция будет вызываться бесконечно, пока не будет остановлена с помощью clearInterval.


let counter = 0;
const intervalId = setInterval(() => {
counter++;
console.log(`Counter: ${counter}`);
if (counter >= 5) {
clearInterval(intervalId); // Остановка интервала
}
}, 1000);


В этом примере код внутри setInterval выполняется каждую секунду. Когда значение counter достигает 5, интервал останавливается с помощью clearInterval. Это полезно для задач, требующих периодического выполнения, таких как обновление данных или анимации.

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

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

✈️ JS собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81
Область видимости переменной определяет, где эта переменная может быть использована. В JS есть три типа областей видимости: глобальная, функциональная и блочная.

Глобальная область видимости — переменные, объявленные вне функций или блоков, доступны везде в коде. Функциональная область видимости — переменные, объявленные внутри функции, доступны только в её пределах. Блочная область видимости появилась с let и const — переменные, объявленные внутри блока {}, доступны только в этом блоке.


const globalVar = "I'm global"; // Глобальная область видимости

function example() {
const functionVar = "I'm in function"; // Функциональная область видимости
if (true) {
const blockVar = "I'm in block"; // Блочная область видимости
}
console.log(blockVar); // Ошибка: blockVar не определена
}


Использование var создаёт переменные с функциональной областью видимости, а let и const — с блочной. Это важно учитывать для предотвращения ошибок и утечек переменных.

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

✈️ JS собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍101
Оператор in проверяет наличие свойства в объекте или его цепочке прототипов. Если свойство существует, возвращается true, иначе — false.

✈️ JS собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81
▶️Строгое сравнение в JavaScript выполняется с использованием операторов === и !==. Оно проверяет как значения, так и типы данных. Если типы или значения не совпадают, результат будет false.


5 === '5'; // false, так как разные типы (number и string)
5 === 5; // true, одинаковые значения и типы


В отличие от нестрогого сравнения (== и !=), которое может приводить типы данных для сравнения, строгое сравнение исключает неявные преобразования, что делает его более предсказуемым и безопасным.

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

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

✈️ JS собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61
📝 Метод pop используется для удаления и возврата последнего элемента массива. Если массив пуст, возвращается undefined. Также можно указать индекс элемента для удаления.


const fruits = ['apple', 'banana', 'cherry'];

// Удаление последнего элемента
const lastFruit = fruits.pop();
console.log(lastFruit); // 'cherry'
console.log(fruits); // ['apple', 'banana']

// Удаление элемента по индексу
const firstFruit = fruits.pop(0); // Не работает, pop удаляет только последний элемент


Метод изменяет исходный массив и возвращает удаленный элемент. Для удаления элементов по индексу лучше использовать splice.

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

✈️ JS собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51🤔1
👉 Для проверки, является ли значение null или undefined, можно использовать строгое сравнение (===) или оператор логического И (&&).

let value = null;

// Проверка через строгое сравнение
if (value === null || value === undefined) {
console.log('Value is null or undefined');
}


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

✈️ JS собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71👀1
Комментарии в коде используются для пояснения логики или отключения части кода. В JS однострочные комментарии начинаются с //, а многострочные — с /* и заканчиваются */.

✈️ JS собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71
🟠Для проверки поддержки браузером определенной функции используется проверка существования этой функции в объекте window или другом соответствующем объекте.


if (typeof window.localStorage !== 'undefined') {
console.log('localStorage is supported');
} else {
console.log('localStorage is not supported');
}


Если функция или API доступны, условие выполнится. Это позволяет писать код с учетом совместимости с разными браузерами.

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

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

✈️ JS собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61
🔥 AJAX (Asynchronous JavaScript and XML) — это технология, позволяющая отправлять и получать данные с сервера без перезагрузки страницы. Основной инструмент для выполнения асинхронных запросов — объект XMLHttpRequest или современный метод fetch.

Пример с использованием fetch:

fetch('https://api.example.com/data')
.then(response => response.json()) // Преобразуем ответ в JSON
.then(data => console.log(data)) // Работаем с данными
.catch(error => console.error('Ошибка:', error)); // Обрабатываем ошибки


fetch возвращает промис, что позволяет удобно работать с асинхронными операциями. Для более сложных запросов можно передавать дополнительные параметры, такие как метод, заголовки или тело запроса.

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

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

✈️ JS собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61
🔥 Область видимости (scope) определяет доступность переменных, функций и объектов в определенной части кода. В языке существует несколько типов областей видимости: глобальная, функциональная и блочная.

Глобальная область видимости — переменные, объявленные вне функций или блоков, доступны везде в коде. Функциональная область видимости ограничивает доступ переменных, объявленных внутри функции, только этой функцией. Блочная область видимости, появившаяся с введением let и const, ограничивает доступ переменных блоком кода, например, внутри if или for.


const globalVar = 'global'; // Глобальная область видимости

function example() {
const localVar = 'local'; // Функциональная область видимости
if (true) {
const blockVar = 'block'; // Блочная область видимости
}
}


Понимание областей видимости помогает избегать ошибок, связанных с использованием переменных вне их контекста.

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

✈️ JS собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61
null — это явно присвоенное значение, обозначающее отсутствие какого-либо объекта или значения. undefined означает, что переменная была объявлена, но ей не было присвоено значение, или свойство объекта не существует.

✈️ JS собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71
▶️ Модули ES6 позволяют организовывать код в отдельные файлы, которые можно импортировать и экспортировать.


// export.js
export const value = 42;
export function greet() { return 'Hello'; }


Для экспорта используются ключевые слова export или export default.


// import.js
import { value, greet } from './export.js';
console.log(value); // 42
console.log(greet()); // Hello


Импорт выполняется с помощью import. Модули поддерживают статический анализ, что позволяет оптимизировать загрузку и устранять неиспользуемый код. Модули всегда работают в строгом режиме (use strict).

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

✈️ JS собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71
Рефакторинг — это процесс улучшения структуры кода без изменения его внешнего поведения. Для эффективного рефакторинга важно использовать тесты, чтобы убедиться, что функциональность не нарушена, и применять небольшие, инкрементальные изменения.

✈️ JS собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61
Асинхронность и синхронность — ключевые концепции, определяющие порядок выполнения кода.

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


console.log('First');
console.log('Second'); // Выполнится только после завершения первой строки


Асинхронный код позволяет выполнять задачи без блокировки основного потока. Операции могут быть отложены и завершены позже, что особенно полезно для работы с сетью, файлами или таймерами.


console.log('First');
setTimeout(() => console.log('Second'), 1000); // Выполнится через 1 секунду, не блокируя поток
console.log('Third'); // Выполнится сразу после 'First'


Асинхронность достигается через колбэки, промисы и async/await, что делает код более эффективным для задач с ожиданием.

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

✈️ JS собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍72
'use strict' — это директива, которая включает строгий режим выполнения кода. Она помогает избежать неявных ошибок, запрещая использование небезопасных конструкций и улучшая оптимизацию кода.

✈️ JS собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81
Чтобы избежать callback hell, можно использовать промисы (Promises) или синтаксис async/await. Промисы позволяют организовать асинхронный код в цепочку, а async/await делает его более читаемым, похожим на синхронный.


// С промисами
fetchData()
.then(response => processData(response))
.then(result => saveData(result))
.catch(error => console.error(error));

// С async/await
async function handleData() {
try {
const response = await fetchData();
const result = await processData(response);
await saveData(result);
} catch (error) {
console.error(error);
}
}


Также можно разбивать код на отдельные функции, чтобы избежать вложенности. Это улучшает читаемость и поддерживаемость.

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

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