100 вопросов на собеседование по JavaScript. С подробными объяснениями - Кириченко Ирина 2 стр.


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

17. Чем отличаются методы массивов map (), filter () и reduce ()? Приведите примеры использования каждого из них?

Методы массивов map(), filter() и reduce() каждый из этих методов предоставляет различные способы обработки массивов в JavaScript:

·         map() создает новый массив, содержащий результат вызова предоставленной функции для каждого элемента исходного массива. Этот метод не изменяет исходный массив, а возвращает новый массив с результатами применения функции к каждому элементу.

const numbers = [1, 2, 3, 4];

const doubled = numbers.map(num => num * 2);

/ doubled: [2, 4, 6, 8]

·         filter() создает новый массив, содержащий только те элементы исходного массива, для которых функция возвращает true. Этот метод также не изменяет исходный массив, а возвращает новый массив с отфильтрованными элементами.

const numbers = [1, 2, 3, 4];

const evenNumbers = numbers.filter(num => num % 2 === 0);

// evenNumbers: [2, 4]

·         reduce() применяет функцию-аккумулятор к каждому элементу массива, сводя его к единственному значению. Этот метод может выполняться на массиве для вычисления суммы, подсчета количества элементов, объединения элементов и многого другого.

const numbers = [1, 2, 3, 4];

const sum = numbers.reduce((accumulator, currentValue) => accumulator + currentValue, 0);

// sum: 10

в данном примере 0 это начальное значение аккумулятора.

18. Что такое Promise в JavaScript? Какие преимущества они предоставляют при работе с асинхронным кодом?

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

19. Что такое async и await в JavaScript? Как они упрощают написание асинхронного кода?

Ключевые слова async и await помогают упростить асинхронное программирование. Когда функция объявляется с ключевым словом async, она всегда возвращает Promise. await используется внутри async функций для приостановки выполнения кода до тех пор, пока Promise не завершится, и затем возвратит результат этого Promise. Это позволяет писать асинхронный код в более линейном стиле, без использования цепочек колбэков или методов обработки Promise.

Например:

function fetchData() {

return new Promise(resolve => {

setTimeout(() => {

resolve('Данные с сервера');

}, 2000);

});

}

async function getData() {

try {

const result = await fetchData();

console.log(result); // Выведет: 'Данные с сервера'

} catch (error) {

console.error('Ошибка:', error);

}

}

getData();

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

20. Какие методы объекта Math существуют в JavaScript? Приведите примеры их использования?

Math в JavaScript предоставляет различные методы для выполнения математических операций:

Math.random() возвращает псевдослучайное число от 0 (включительно) до 1 (не включительно);

const randomNum = Math.random();

console.log(randomNum); // Выведет случайное число между 0 и 1

Math.floor() округляет число вниз до ближайшего целого числа;

const num = 4.9;

const roundedDown = Math.floor(num);

console.log(roundedDown); // Выведет: 4

Math.ceil() округляет число вверх до ближайшего целого числа:

const num = 4.1;

const roundedUp = Math.ceil(num);

console.log(roundedUp); // Выведет: 5

Math.abs() возвращает абсолютное значение числа:

const num = -10;

const absoluteValue = Math.abs(num);

console.log(absoluteValue); // Выведет: 10

Math.max() и Math.min() возвращают максимальное и минимальное значение из набора чисел соответственно:

const maxNum = Math.max(10, 5, 8);

Назад