코드스테이츠

13일차~ (스코프)

lap_mu 2022. 11. 7. 22:17

오늘은 원시자료형과 참조자료형의 차이에 대해 배우고 스코프를 배우게 되었다. 어제 열심히 var, let, const의 차이를 스터디에서 강의하려고 만들고 나서 시간표를 봤더니 오늘 내용이 90% 겹쳤다. 약간 망연자실 했지만 어쩌겠나 복습하는겸 해야지! 원시자료형과 참조자료형은 수업 때 블로깅을 했으니 그 다음 스코프에 대한 내용을 블로깅 해야겠다.

 

스코프

  1. 스코프 란?

  스코프는 변수가 가지는 유효범위이다. 스코프에는 전역 스코프와 지역 스코프가 있다.

let abc = 100;     // 전역 스코프에 선언한 변수

if(true) {
	let bbc = 10;   // 지역 스코프에 선언한 변수
}
  •  전역 스코프에 변수를 선언하게 되면 변수의 유효범위는 전체 영역이 된다. 지역 스코프에 변수를 선언하게 되면 선언한 {} 안이 변수의 유효범위가 된다. 
  • 외부 스코프의 변수를 내부 스코프에서 참조 가능하다.
  • 내부 스코프의 변수를 외부 스코프에서 참조 불가능하다.
  • 스코프는 중첩이 가능하다.
  • 외부 스코프의 변수보다 내부 스코프의 변수의 우선순위가 높다.
  • var는 함수 스코프만 지역 스코프로 생각한다.
  • var는 블록레벨 스코프는 지역 스코프로 생각하지 않기 때문에 전역 스코프에 선언한 것처럼 전체 영역에 유효하다.
  • let과 const는 if, for 같은 블록레벨 스코프도 지역 스코프로 생각한다. 

 

var a = 100;

if(true) {
	var a = 200;
}

console.log(a);  // output : 200 블록레벨 스코프는 지역 스코프로 생각하지 않기 때문에


let a = 100;

if(true) {
	let a = 200;
}

console.log(a);   // output : 100 블록레벨 스코프를 지역스코프로 생각하기 때문에