}
return innerFunction;
}
const inner = outerFunction();
inner(); // Выведет: "I am from the outer function"
7. Что такое прототип в JavaScript? Какие механизмы наследования используются в JavaScript?
В JavaScript объекты могут иметь прототипы, из которых они наследуют свойства. Прототип – это механизм, позволяющий объектам наследовать свойства других объектов. JavaScript использует прототипное наследование, где каждый объект имеет ссылку на прототип (другой объект), и он может наследовать свойства этого прототипа.
// Создаем конструктор объекта
function Animal(name) {
this.name = name;
}
// Добавляем метод в прототип объекта Animal
Animal.prototype.sayHello = function () {
console.log("Hello, my name is " + this.name);
};
// Создаем экземпляр объекта Animal
let cat = new Animal("Whiskers");
// Вызываем метод sayHello у объекта cat
cat.sayHello(); // Выводит "Hello, my name is Whiskers"
8. Что такое стрелочные функции (arrow functions) и в чём их особенность? Какие у них могут быть ограничения?
Стрелочные функции (arrow functions) отличаются от обычных функций тем, что не имеют своего собственного контекста this, используя контекст окружающего кода. Они также короче и автоматически возвращают значение, если оно записано в одну строку без использования фигурных скобок. Однако у стрелочных функций есть ограничения, например, они не могут быть использованы как конструкторы или иметь свои собственные методы 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) {