Галоўная > Разбор пытанняў з рэальных сумоўяў - JS Core. Hoisting. Temporal Dead Zone (часовая мертвая зона).

Разбор пытанняў з рэальных сумоўяў - JS Core. Hoisting. Temporal Dead Zone (часовая мертвая зона).

сумоўе js beginer

Пытанне:

Ёсць лі hoisting для let, const, classes? Што такое Temporal Dead Zone (часовая мертвая зона)?

Кароткі адказ

let, const, classes таксама ўсплываюць, але, у адрозненне ад var, трапляюць у так званую Temporal Dead Zone, калі яны знаходзяцца ў воласці бачнасці, але не яшчэ не аб'яўленыя.

Падрабязны адказ

JS-двіжок разбірае наш код у 2 этапы:

-счытвае ўсе аб'явы пераменных і function declaration (таму ведае пра іх да іх аб'вы ў кодзе) і пераносіць іх ў верх лексічнай вобласці бачнасці.

-выконвае код

Аб'явы пераменных let і const таксама счытваюцца і пападаюць ці ў пачатак коду (у выпадку глабальнай вобласці бачнасці), ці ў пачатак блоку, але пападаюць у часовую мертвую зону (лічацца мертвымі). Таму інтэрпрэтатар ведае пра іх да пачатку выканання кода, але яны недасяжныя да моманту іх аб'яўлення.

Так у кансолі можам назіраць розныя памылкі, якія з'яўляюцца ў першым радку кода, калі пераменная аб'яўлена ніжэй, і калі наогул не аб'яўлена:

console.log(a);
// Uncaught ReferenceError: a is not defined
console.log(a);
const a = 1;
// ReferenceError: Cannot access 'a' before initialization
loveJS, 2023-01-30
Каментары

    (Каб даслаць каментар залагуйцеся ў свой уліковы запіс)

    ;