본문 바로가기

Programing/JavaScript

[자바스크립트] 스코프(scope)

스코프(scope)란 변수가 스크립트 안의 

어느 장소에서 참조할 수 있는가에 대한 개념이다.


자바스크립트 scope에는 

스크립트 전체에서 참조할 수 있는 글로벌 스코프와

정의된 함수 안에서만 참조할 수 있는 로컬 스코프로 분류할 수 있다.


자바의 scope는 블록 스코프

즉 {} 안에서의 스코프 유지가 가능했지만,

자바스크립트에서는 이를 지원하지 않으니,


if(a>b) {

   var c;

}


같은 구문을 사용할 때 c는 if문이 끝나도

c변수가 유지되니 이런 사용에 유의 해야한다.

또, 로컬 스코프 사용에 유의해야되는데,




위의 구문에서

 function 가장 첫줄에 보여지는 scope값이

 로컬 변수가 세팅되기 전이라 글로벌 스코프 값인

 Global이 출력될 것이라 생각하기 쉽지만,

 실제로는 undefined가 출력된다.


 이는 로컬 변수가 함수가 실행되는 시점에서 이미 로컬변수는 유효하다.

 다만 아직 초기화가 이루어지지 않았기 때문에 undefined가 출력된다고 한다.