В javascript hoisted objects — это объекты, к которым можно получить доступ до их объявления в коде без того, чтобы javascript не выдал ошибку, жалуясь на это.
Некоторые объекты могут быть подняты, например, переменные, функции и классы.
Переменные, объявленные с помощью var
Если мы попытаемся получить доступ к переменной, объявленной с помощью var, до ее объявления в коде, ее значение будет неопределенным.
console.log(name); //undefined
var name = "John";
javascript снова установит значение переменной в undefined вместо того, чтобы выдать ошибку.
Переменные, объявленные с помощью let и const
эти переменные не являются подхваченными и вызовут ошибку при обращении к ним до объявления
console.log(name); //reference error: name is not defined
const name = "John";
Функции
функции также объявляются с подъемником, и их значением будет сама функция, что означает, что они могут быть использованы до объявления
sayHi(); //Hi
function sayHi() {
console.log("Hi");
}
Однако стрелочные функции не поднимаются, даже если они объявлены с помощью var
sayHi(); // sayHi is not a function
var sayHi = () => console.log("Hi");
Классы ES6
классы не поднимаются и вызывают ошибку при обращении к ним до объявления
const person = new Person(); //cannot access 'Person' before initialization
class Person {
constructor() {}
}
Резюме
переменные var: подняты и не определены по умолчанию
переменные const: не поддерживаются
функции: подняты и могут быть использованы
стрелочные функции: не поддерживаются
классы: не поддерживаются