(JavaScript) 스코프(Scope)란?

Su Bak
4 min readApr 9, 2019

자바스크립트를 공부할 때 스코프(Scope)란 단어를 많이 접할 수 있는데요. 이 스코프란 무엇인지에 대해 알아보겠습니다.

Scope를 우리말로 번역하면 ‘범위’라는 뜻을 가지고 있습니다. 즉, 스코프(Scope)란 ‘변수에 접근할 수 있는 범위’라고 할 수 있는데요.

자바스크립트에선 스코프는 2가지 타입이 있습니다. 바로 global(전역)과 local(지역) 인데요.

전역 스코프(Global Scope)는 말 그대로 전역에 선언되어있어 어느 곳에서든지 해당 변수에 접근할 수 있다는 의미이고 지역 스코프(Local Scope)는 해당 지역에서만 접근할 수 있어 지역을 벗어난 곳에선 접근할 수 없다는 의미입니다.

자바스크립트에서 함수를 선언하면 함수를 선언할 때마다 새로운 스코프를 생성하게 됩니다. 그러므로 함수 몸체에 선언한 변수는 해당 함수 몸체 안에서만 접근할 수 있는데요. 이걸 함수 스코프(function-scoped)라고 합니다. 함수 스코프가 바로 지역 스코프의 예라고 할 수 있습니다.

아래의 예제 코드를 통해 전역 스코프, 지역(함수) 스코프를 더 자세히 알아보겠습니다.

var a = 1; // 전역 스코프function print() { // 지역(함수) 스코프
var a = 111;
console.log(a);
}
print();console.log(a);

위의 예제에서 print함수를 호출하면 console엔 1이 출력될까요? 아니면 111이 출력될까요?

print 함수를 호출하면 111이 출력되는 것을 볼 수 있습니다.

var a = 1; // 전역 스코프function print() { // 지역(함수) 스코프
var a = 111;
console.log(a);
}
print(); // 111console.log(a); // 1

print 함수에서 console.log(a);는 a를 출력하기 위해 자신의 함수 스코프 안에 변수 a가 있는지 찾아볼 것입니다. 그러면 var a = 111; 을 찾아내면 111을 console에 출력하고 함수는 자신의 사명을 다하게 됩니다.

--

--

Su Bak

Backend Developer. Mainly use JavaScript but try not to have language constraints. Always trying to acquire new knowledge