ENIGMA AI
ENIGMA AI
JavaScript Легкий

Какие области видимости существуют в JavaScript?

Области видимости в JavaScript

1. Global Scope

var globalVar = "I'm global";
let globalLet = "Also global";

function test() {
    console.log(globalVar);  // Доступно
}

// В браузере: window.globalVar

2. Function Scope

function example() {
    var functionScoped = "Only here";
    console.log(functionScoped);  // OK
}

console.log(functionScoped);  // ReferenceError

3. Block Scope (let, const)

if (true) {
    let blockLet = "block";
    const blockConst = "also block";
    var notBlock = "function scope!";
}

console.log(notBlock);     // OK — var не имеет block scope
console.log(blockLet);     // ReferenceError
console.log(blockConst);   // ReferenceError

4. Module Scope

// module.js
const privateVar = "not exported";
export const publicVar = "exported";

// other.js
import { publicVar } from './module.js';
// privateVar недоступна

Lexical Scope (Замыкание):

function outer() {
    const outerVar = "outer";

    function inner() {
        console.log(outerVar);  // Доступно!
    }

    return inner;
}

const fn = outer();
fn();  // "outer" — замыкание сохраняет доступ

var vs let vs const:

Особенность var let const
Scope Function Block Block
Hoisting Да (undefined) Да (TDZ) Да (TDZ)
Переприсваивание Да Да Нет
Повторное объявление Да Нет Нет

Temporal Dead Zone (TDZ):

console.log(x);  // undefined (hoisting)
var x = 1;

console.log(y);  // ReferenceError (TDZ)
let y = 2;

Hoisting:

// var поднимается с undefined
console.log(a);  // undefined
var a = 5;

// function поднимается полностью
hello();  // "Hello!"
function hello() { console.log("Hello!"); }

// let/const в TDZ до объявления

Похожие вопросы

Готовитесь к собеседованию?

ENIGMA AI — невидимый ИИ-помощник для технических интервью

Попробовать бесплатно
Все вопросы