실행 컨텍스트를 이해하기 위해 다시한번 스코프를 정리할 필요성을 느꼈습니다.
const nm = "JO";
function cons(){
console.log(nm);
// JO
}
console.log(nm);
// JO
전역 스코프로 선언된 변수는 모든 범위에서 사용할 수 있습니다.
{
const nm = "JO";
console.log(nm);
// JO
}
console.log(nm);
// Error
선언된 블럭 내에서만 변수를 사용할 수 있으며, 해당 블럭을 벗어난다면 사용할 수 없습니다.
{
var nm = "JO";
console.log(nm);
// JO
}
console.log(nm);
// JO
function fnc(){
const nm = "JO";
{
const nik = "HEE";
console.log(nm);
// JO
}
console.log(nik);
// Error
}
nik이 선언된 블럭은 내부 범위이며, 해당 블럭에서의 바깥 함수 영역은 외부 범위입니다.
외부 범위에서 선언된 변수는 내부 범위에서 사용 할 수 있지만
내부 범위에 선언된 변수는 외부 범위에서 사용 할 수 없습니다.
Reference