[Javascript HighPerformance] 스코프체인(지역변수 vs 전역변수)

목차

 

자바스크립트의 성능을 높이기 위해 가장 기본적으로 스코프체인이라는 것을 알아야한다.

 

스코프체인이란

함수안에서 선언된 변수를 함수가 찾아가는 과정을 말한다.

 

스코프체인에서 가장 먼저 검색을 하게 되는 것은 지역변수이며 가장 마자막에 검색을 하는 것은 전역변수 이다.

 

함수를 실행하게 되면 실행문맥이라는 내부객체가 생성이 되며, 실행문맥은 함수가 실행되는 환경을 정의한다. 함수를 여러번 호출 하면 실행문맥도 여러 개 만들어 지고 함수가 완전히 실행되면 실행문맥은 파괴된다.

 

여기서 스코프 체인이 일어나는데 활성화 객체(Activation object)와 전역객체(Global object)가 실행이 되어 우선 적으로 활성화 되어 있는 객체를 검색해서 할당된 변수를 찾습니다.

지역변수를 먼저 검색한다고 생각하시면 이해하기가 쉽습니다.

 

지역변수에 사용하고자 하는 변수가 없다면 전역객체를 검색하게 되는데 전역객체에서 해당 하는 변수를 찾아서 값을 실행하게 됩니다.

 

 

위의 두개의 함수를 생각해 봅시다.

첫 번째 함수는 지역변수로 선언을 하여 함수를 실행시 활성화 객체만 검색을 하게 됩니다.

두 번째 함수는 전역변수로 선언을 하여 함수를 실행시 활성화 객체를 검색 후에 전역객체를 검색하여 2번 검색을 하게 되어 성능을 떨어 트립니다.

 

하나의 예를 더 봅시다.

document는 전역객체에 있는 변수 입니다.

위와 같은 패턴을 사용하면 dom 이라는 지역변수로 할당하여 접근하기 때문에 코드 속도를 보장할 수 있습니다.

 

 

물론 짧거나 소규모로 운영되는 사이트라면 크게 문제는 안되겠지만 대규모나, 유지보수, 메모리 사용등에 고려를 해서 한다면 전역변수는 삼가여 코드를 작성하는 것이 좋다

 

 

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유