Skip to content

Kyunghwa Yoo

자바스크립트 scope

javascript1 min read

자바스크립트 스코프

자바스크립트에는 3가지 스코프가 존재한다.

  1. global scope
  2. local scope
  3. eval scope

자바스크립트에는 블록 스코프가 없다. 스코프체인(문법적 스코프 라고도 한다)을 통해 계층구조의 부모를 검색하며 값을 찾는다. 스코프체인을 검색할 때 가장 처음 발견한 값을 사용한다.

스코프는 함수를 정의할 때 결정된다. 이것을 문법적 스코핑(lexical scoping) 이라고 하는데, 스코프체인은 함수를 호출한 위치가 아닌 정의한 위치에 의해 결정된다.

클로저

반환된 함수를 통해서 스코프체인을 거쳐 부모함수에 접근할 수 있는 것을 클로저 라고 한다.

1var countUpFromZero = function() { // 부모함수
2 var count = 0; // 부모함수의 값
3 return function() { // 자식함수
4 return ++count; // 부모함수의 값에 접근한다.
5 };
6}(); // 즉시 실행해서 자식함수를 반환한다.
7
8console.log(countUpFromZero()); // 자식 함수를 실행해서 부모함수의 값에 접근한다. 이것이 클로저
9console.log(countUpFromZero());
10console.log(countUpFromZero());
© 2020 by Kyunghwa Yoo.