TG Telegram Group & Channel
Frontend Interview - собеседования по Javascript / Html / Css | United States America (US)
Create: Update:

Что такое hoisting?

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

Hoisting переменных
Для переменных, объявленных с использованием var, только само объявление поднимается, а присвоение значения остается на своем месте. Это может привести к неожиданным результатам.

console.log(a); // undefined
var a = 5;
console.log(a); // 5

Интерпретируется как:
var a;
console.log(a); // undefined
a = 5;
console.log(a); // 5


Переменные, объявленные с помощью let и const, также поднимаются, но находятся в так называемой "временной мертвой зоне" (temporal dead zone, TDZ) до тех пор, пока выполнение кода не дойдет до строки их объявления. Попытка доступа к таким переменным до их объявления вызывает ошибку.
console.log(b); // ReferenceError: Cannot access 'b' before initialization
let b = 10;
console.log(b); // 10

console.log(c); // ReferenceError: Cannot access 'c' before initialization
const c = 15;
console.log(c); // 15


Hoisting функций
Функции, объявленные с помощью function declaration, полностью поднимаются — как объявление, так и их определение. Это позволяет вызывать функции до их объявления в коде.
hoistedFunction(); // "This function is hoisted"

function hoistedFunction() {
console.log("This function is hoisted");
}


Функции, объявленные как function expression, ведут себя иначе. Только объявление переменной поднимается, но не ее присвоение. Это значит, что вы не можете вызвать такую функцию до ее фактического объявления.
hoistedFunctionExpression(); // TypeError: hoistedFunctionExpression is not a function

var hoistedFunctionExpression = function() {
console.log("This function is not hoisted");
};


Важные моменты

- Переменные, объявленные с помощью var, поднимаются, но их значение становится undefined до присвоения.
- Переменные, объявленные с помощью let и const поднимаются, но остаются недоступными до фактического объявления в коде, что вызывает ошибку при доступе.
- Функции, объявленные как function declaration, полностью поднимаются и могут быть вызваны до своего объявления.
- Функции, объявленные как function expression, поднимаются только как переменные, а присвоение происходит на месте, что делает их недоступными до присвоения.

👉 @frontendInterview

Что такое hoisting?

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

Hoisting переменных
Для переменных, объявленных с использованием var, только само объявление поднимается, а присвоение значения остается на своем месте. Это может привести к неожиданным результатам.
console.log(a); // undefined
var a = 5;
console.log(a); // 5

Интерпретируется как:
var a;
console.log(a); // undefined
a = 5;
console.log(a); // 5


Переменные, объявленные с помощью let и const, также поднимаются, но находятся в так называемой "временной мертвой зоне" (temporal dead zone, TDZ) до тех пор, пока выполнение кода не дойдет до строки их объявления. Попытка доступа к таким переменным до их объявления вызывает ошибку.
console.log(b); // ReferenceError: Cannot access 'b' before initialization
let b = 10;
console.log(b); // 10

console.log(c); // ReferenceError: Cannot access 'c' before initialization
const c = 15;
console.log(c); // 15


Hoisting функций
Функции, объявленные с помощью function declaration, полностью поднимаются — как объявление, так и их определение. Это позволяет вызывать функции до их объявления в коде.
hoistedFunction(); // "This function is hoisted"

function hoistedFunction() {
console.log("This function is hoisted");
}


Функции, объявленные как function expression, ведут себя иначе. Только объявление переменной поднимается, но не ее присвоение. Это значит, что вы не можете вызвать такую функцию до ее фактического объявления.
hoistedFunctionExpression(); // TypeError: hoistedFunctionExpression is not a function

var hoistedFunctionExpression = function() {
console.log("This function is not hoisted");
};


Важные моменты

- Переменные, объявленные с помощью var, поднимаются, но их значение становится undefined до присвоения.
- Переменные, объявленные с помощью let и const поднимаются, но остаются недоступными до фактического объявления в коде, что вызывает ошибку при доступе.
- Функции, объявленные как function declaration, полностью поднимаются и могут быть вызваны до своего объявления.
- Функции, объявленные как function expression, поднимаются только как переменные, а присвоение происходит на месте, что делает их недоступными до присвоения.

👉 @frontendInterview


>>Click here to continue<<

Frontend Interview - собеседования по Javascript / Html / Css






Share with your best friend
VIEW MORE

United States America Popular Telegram Group (US)