100 вопросов на собеседование по JavaScript. С подробными объяснениями. Ирина Кириченко
иметь свои собственные методы this.
const regularFunction = function(a, b) {
return a + b;
};
const arrowFunction = (a, b) => a + b; // Короткий синтаксис для однострочных выражений
// Стрелочная функция с использованием фигурных скобок
const arrowFunctionWithBlock = (a, b) => {
const result = a + b;
return result;
};
9. Что такое асинхронность в JavaScript? Какие инструменты предоставляет JavaScript для работы с асинхронным кодом?
Асинхронность в JavaScript – это способ выполнения операций, который не блокирует основной поток выполнения. В JavaScript для работы с асинхронным кодом используются колбэки (callbacks), промисы (promises), async/await и другие методы, позволяющие эффективно управлять асинхронными операциями.
// Пример использования Promise и fetch для асинхронного получения данных
fetch('https://api.example.com/data')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error fetching data:', error));
// Пример использования async/await
async function fetchData() {
try {
const response = await fetch('https://api.example.com/data');
const data = await response.json();
console.log(data);
} catch (error) {
console.error('Error fetching data:', error);
}
}
10. Как работает система обработки ошибок (error handling) в JavaScript?
Система обработки ошибок (error handling) в JavaScript позволяет обнаруживать и обрабатывать ошибки в коде. Это включает в себя использование конструкции try…catch, где код, который может вызвать ошибку, помещается в блок try, а обработка ошибки происходит в блоке catch.
function divide(a, b) {
try {
if (b === 0) {
throw new Error('Division by zero');
}
return a / b;
} catch (error) {
console.error('Error:', error.message);
}
}
console.log(divide(10, 2)); // Выведет: 5
console.log(divide(10, 0)); // Выведет: "Error: Division by zero"
11. Что такое hoisting в JavaScript? Как это работает с переменными и функциями?
Hoisting в JavaScript – это механизм, при котором переменные и функции "поднимаются" вверх своей области видимости перед тем, как код начнет выполняться. Это означает, что переменные могут быть объявлены после их использования, а функции могут быть вызваны до их объявления. Однако только объявления переменных и функций поднимаются, а присвоения значений остаются на своих местах.
console.log(myVar); // Выведет: undefined
let myVar = 10;
12. Чем отличается синхронный код от асинхронного? Какие могут быть преимущества использования асинхронного кода?
Синхронный код выполняется последовательно, один шаг за другим, в то время как асинхронный код позволяет выполнить некоторые операции параллельно или отложить их выполнение, продолжая выполнение кода. Преимущества асинхронного кода включают повышение производительности за счет параллельного выполнения операций и предотвращение блокировки потока выполнения, что позволяет приложению быть более отзывчивым.
13. Что такое Event Loop в JavaScript? Как он влияет на выполнение асинхронного кода?
Event Loop (Цикл событий) – это механизм в JavaScript, который контролирует порядок выполнения кода. Он следит за стеком вызовов и очередью колбэков, перемещая колбэки из очереди в стек при завершении синхронного кода. Это позволяет асинхронному коду выполняться после завершения синхронных операций, не блокируя