MDN scope:
https://developer.mozilla.org/en-US/docs/Glossary/Scope
! 변수는 최대한 필요한 곳에서 정의해야 함!
// 코드 블럭: { }, if() { }, for() { }, function() { }....
//블럭 외붕에서는 블럭 내부의 변수를 참조할 수 없음❌
{
const a = 'a';
console.log(a);
}
const b ='b';
// console.log(a); // a is not defined
//함수 외붕에서는 함수 내부의 변수를 참조할 수 없음❌
function print() {
const message = 'Hellow World';
console.log(message);
}
console.log(message); // 접근 불가
//함수 외붕에서는 함수 내부의 매개변수를 참조할 수 없음❌
function sum(a,b) {
console.log(a,b);
}
console.log(a,b); // 접근 불가
{
const x = 1;
{
const y = 2;
console.log(x); // 1
}
console.log(x); // 1
console.log(y); // app crash
}
const text = 'global'; // 전역 변수, 전역 스코프 (글로벌 변수, 글로벌 스코프)
{
const text = 'inside block1'; // 지역 변수(로컬변수), 지역 스코프(로컬 스코프)
{
console.log(text); // inside block1
}
}
const text = 'global';
{
//const text = 'inside block1';
{
console.log(text); // global
}
}