# 스코프(Scope)

스코프(Scope)는 변수의 유효 범위를 말한다.

# 스코프의 구분

모든 변수는 스코프를 갖는다. 변수의 관점에서 스코프를 구분하면 아래와 같다.

# 함수 레벨 스코프 / 블록 레벨 스코프

function test(){
	var a = 10; // 함수 레벨 스코프
  	console.log(a);
}
console.log(test()); // 10
console.log(a) // 에러!

위와 같이 var는 함수 레벨 스코프, 아래와 같이 let과 const는 블록 레벨 스코프이다.

if(true){
	const a = 10; // 블록 레벨 스코프
  	console.log(a); // 10
}

console.log(a); // 에러!

# 렉시컬 스코프(Lexical scope)

렉시컬 스코프는 함수를 어디서 호출하는지가 아니라 어디에 선언하였는지에 따라 결정된다.