# Scope & Hoisting — JavaScript

Source: https://www.geekswithgeeks.com/en/javascript/js-scope-hoisting

> Where variables live, and why some are usable before their line.

## Function vs block scope

A variable's scope is where it's visible: `var` is limited to the enclosing function, while `let`/`const` are limited to the enclosing `{ }` block.

## Hoisting

Declarations are moved to the top of their scope during compilation — but only the declaration, not the assignment.

```js
console.log(x);   // undefined, not an error
var x = 5;

console.log(y);   // ReferenceError
let y = 5;
```

## Temporal dead zone

`let`/`const` are hoisted too, but stay in a "temporal dead zone" until their line runs — accessing them earlier throws.
