Область видимости +
Вообще создавать сложные области видимости (scope) - это плохая практика, в идеале нужно пользоваться в основном только local scope и не создавать непредсказуемых мутаций на глобальном уровне.
Типы областей видимости
- Global scope - объявление на самом верху
- Block scope - внутри блока
{ ... }- наvarне распространяется (лучше избегать var) - Function scope - внутри функций (scope chain)
Global scope
Будут доступны отовсюду снизу, если нет “Затенение” (shadowing) — когда имена объявленных переменных внутри блоков или функций совпадают
var a = 1;
const b = 2;
const showGlobalVars = () => {
console.log(a, b);
};
showGlobalVars(); // 1 2
Block scope
if (true) {
var a = 10;
let b = 20;
}
console.log(a); // 10
// console.log(b); // ReferenceError