자바스크립트에는 다음과 같은 종류의 스코프가 있다.
처음 스코프를 배울 '아 이건 당연한거쥥~' 이러면서 대충 훑고 넘겼는데 부끄럽지만 막상 코드를 짜다보니 헷갈릴 때가 많았다 그래서 한번 정리!
var 로 선언한 변수들은 함수 스코프만을 따른다var a = 1; // 전역 변수
function print() { // 지역(함수) 스코프
var a = "Hi!"; // 지역 변수
console.log(a); // output: Hi!
}
print();
console.log(a); // output: 1
let, const 는 블록 스코프를 따를 수 있다var x = 0;
{
var x = 1;
console.log(x); // 1
}
console.log(x); // 1
let y = 0;
{
let y = 1;
console.log(y); // 1
}
console.log(y); // 0
var x = 'static';
function foo(){
var x = 'local'; // 블록 스코프
bar();
}
function bar(){
console.log(x);
}
foo(); // "static"