스코프란 해당 변수에 접근할 수있는 범위를 말한다.
자바스크립트에선 두 가지의 스코프 타입(전역(global), 지역(local))이 존재한다.
전역스코프는 어느 곳에서든 해당 변수에 접근이 가능하고 로컬 스코프는 해당 지역에서만 접근이 가능하다.
예를 들어 자바스크립트에서 함수를 선언하면 새로운 스코프를 생성하고 해당 함수 내에서 선언한 지역변수는 해당 함수 내에서만 사용이 가능하다.
블록스코프는 블록이 생성될때 새로운 스코프가 생성된다.
원래 자바스크립트는 함수스코프를 따르지만 let, const의 등장이후로 블록 스코프형성도 가능해졌다.
예를 들어반목문이나 if문 같이 해당 구문 안에서 지역변수(let, const)를 선언하면 해당 구문 안에서만 지역변수를 사용할 수 있다.
function () {
var a = 3;
if(a >= 3){
let a = 4;
}
console.log(a);
}
위 코드를 보면 콘솔 값은 3가 나온다. 그 이유는 if문 안에 있는 a는 지역 변수이기 때문에
consol.log(a) 에서 a는 전역 변수로 설정되어 있는 var a = 3;의 값을 가져오기 때문이다.
이런 지역변수 특징을 활용해 클로저라는 개념으로 함수를 생성이 가능하다. 클로저 개념은 추후에 다룰 예정이다.