Рекурсия. Реализуйте рекурсивную функцию для вычисления n-го числа в последовательности Фибоначчи.
function fibonacci(n) { if (n <= 2) return 1; return fibonacci(n - 1) + fibonacci(n - 2); } console.log(fibonacci(10)); // 55
Замыкание. Создайте замыкание, которое возвращает функцию, которая отслеживает, сколько раз она была вызвана.
function createCounter() { let count = 0; return function() { return ++count; } } const counter = createCounter(); console.log(counter()); // 1 console.log(counter()); // 2
Функции высшего порядка. Используйте метод Array.prototype.map, чтобы удвоить значения массива чисел.
const numbers = [1, 2, 3, 4, 5]; const doubledNumbers = numbers.map(number => number * 2); console.log(doubledNumbers); // [2, 4, 6, 8, 10]
Асинхронное программирование. Используйте fetch API для извлечения данных из внешнего API и отображения их на странице с помощью Promises и async/await.
async function fetchData() { const response = await fetch('https://jsonplaceholder.typicode.com/users'); const data = await response.json(); console.log(data); } fetchData();
Обработка и делегирование событий. Используйте делегирование событий для обработки событий кликов по нескольким элементам одного класса.
const buttons = document.querySelectorAll('.my-button'); buttons.forEach(button => button.addEventListener('click', handleClick)); function handleClick(event) { console.log(event.target.innerText); }
Сопоставление, фильтрация и уменьшение: используйте метод Array.prototype.filter, чтобы отфильтровать нечисловые значения из массива, а затем используйте метод Array.prototype.reduce для суммирования оставшихся значений.
const mixedArray = [1, 'a', 2, 'b', 3, 'c']; const numbers = mixedArray.filter(value => typeof value === 'number'); const sum = numbers.reduce((acc, current) => acc + current, 0); console.log(sum); // 6
Оператор деструктурирования и расширения объекта: используйте деструктурирование объекта для извлечения свойств из объекта и используйте оператор расширения для объединения двух объектов.
const person = { name: 'John', age: 30, occupation: 'Developer' }; const { name, age } = person; console.log(name, age); // John 30 const object1 = { a: 1, b: 2, c: 3 }; const object2 = { d: 4, e: 5, f: 6 }; const mergedObject = { ...object1, ...object2 }; console.log(mergedObject); // { a: 1, b: 2, c: 3, d: 4, e: 5, f: 6 }
Литералы шаблонов и работа со строками. Используйте литералы шаблонов для создания строки с динамическими значениями и используйте методы обработки строк для форматирования строки.
const name = "John"; const age = 30; const occupation = "Developer"; const sentence = `My name is ${name} and I am ${age} years old. I am a ${occupation}.`; console.log(sentence); // My name is John and I am 30 years old. I am a Developer. const string = "Hello World"; const uppercase = string.toUpperCase(); const lowercase = string.toLowerCase(); console.log(uppercase); // HELLO WORLD console.log(lowercase); // hello world