Темы, которые необходимо освоить
Есть несколько тем по JavaScript, которые необходимо освоить, если вы хотите пройти любое собеседование по фронтенду.
- Scoping
- Поднятие
- Закрытия
- Обратные вызовы
- Обещания
- Асинхронность и ожидание
Что такое Scoping?
Scoping в JavaScript определяет доступность переменных, объектов и функций.
В JavaScript существует три типа диапазонов
a. Область блока
b. Область функций
c. Глобальная область видимости
Переменные, объявленные с помощью let и const, имеют область видимости блока, но переменные, объявленные с помощью var, не имеют области видимости блока.
Область видимости функции — это когда вы определяете переменную внутри функции, к которой вы не можете получить доступ.
Что такое Hoisting?
Hoisting в javascript — это поведение, при котором функция или переменная может быть использована до объявления.
Что касается переменных, то var является hoisted, а let и const не допускают hoisting.
Следующий код выдаст ошибку.
Что такое закрытие?
Закрытие означает, что внутренняя функция всегда имеет доступ к внешней функции, даже после того, как внешняя функция вернулась.
const hello = () => {
let greet = "hello & welcome";
const welcome = () => console.log(greet);
return welcome;
}
const fun = hello();
fun();
// hello & welcome
Что такое обратный вызов?
Обратный вызов — это функция, которая передается в качестве параметра в другую функцию, которая будет выполнена после завершения задачи.
setTimeout(() => {
console.log("hello, inside boy");
}, 2000);
console.log("hello outside boy");
// hello outside boy
// hello, inside boy
Что такое обещания?
Обещание в JS похоже на обещание в реальной жизни — мы сделаем это или не сделаем.
JS обещание имеет три состояния:
- Ожидание
- Решено
- Отклонено
Что такое async и await
Остановка и ожидание, пока что-то не будет решено. Мы используем ключевое слово async с функцией, чтобы показать, что функция является асинхронной.
Функция async возвращает обещание.
const fetchAPI = async () => {
const res = await fetch('https://api.quotable.io/random');
console.log(res);
}
fetchAPI();