[javascript] 전역 변수와 지역 변수의 접근 방식과 실행 속도 비교

JavaScript에서 변수는 전역 변수와 지역 변수로 나누어집니다. 전역 변수는 어떤 함수 밖에서 선언된 변수로서 전체 스크립트에서 접근 가능하며, 지역 변수는 특정 함수 내에서 선언된 변수로서 해당 함수 내에서만 접근 가능합니다.

이번 글에서는 전역 변수와 지역 변수의 접근 방식과 실행 속도에 대해 비교해보겠습니다.

전역 변수의 접근 방식

전역 변수는 모든 함수에서 접근이 가능하기 때문에 편리하게 사용할 수 있습니다. 그러나 전역 변수는 어디에서든 접근 가능하기 때문에 예상치 못한 변경이 발생할 수 있습니다. 또한, 다른 함수 간에 변수를 공유할 때 전역 변수를 사용하면 함수 간의 의존성이 높아져 유지보수가 어려워질 수 있습니다.

다음은 전역 변수의 예시입니다.

var globalVariable = '전역 변수입니다';

function foo() {
  console.log(globalVariable);  // '전역 변수입니다'
}

foo();

지역 변수의 접근 방식

지역 변수는 특정 함수 내에서만 접근 가능한 변수로, 해당 함수 밖에서는 접근할 수 없습니다. 이는 변수의 범위를 제한하여 변수의 의도치 않은 변경을 방지할 수 있으며, 함수 간의 독립성을 유지할 수 있습니다.

다음은 지역 변수의 예시입니다.

function foo() {
  var localVariable = '지역 변수입니다';
  console.log(localVariable);  // '지역 변수입니다'
}

foo();
console.log(localVariable);  // ReferenceError: localVariable is not defined

실행 속도 비교

전역 변수와 지역 변수는 실행 속도에도 영향을 미칩니다. JavaScript 엔진은 변수를 찾을 때, 스코프 체인을 통해 검색을 진행하는데, 전역 변수에 접근할 때는 전역 스코프까지 탐색해야 하므로 검색 시간이 상대적으로 오래 걸립니다. 반면, 지역 변수는 해당 함수의 스코프에서 검색이 이루어지기 때문에 검색 시간이 짧아 실행 속도가 더 빠릅니다.

실행 속도를 비교하기 위해 다음과 같은 코드를 실행해볼 수 있습니다.

var i;

// 전역 변수 사용
function globalVariableAccess() {
  for (i = 0; i < 100000000; i++) {
    // do something
  }
}

// 지역 변수 사용
function localVariableAccess() {
  var j;
  for (j = 0; j < 100000000; j++) {
    // do something
  }
}

console.time('전역 변수 접근 시간');
globalVariableAccess();
console.timeEnd('전역 변수 접근 시간');

console.time('지역 변수 접근 시간');
localVariableAccess();
console.timeEnd('지역 변수 접근 시간');

실행 결과를 보면, 전역 변수 접근 시간이 상대적으로 더 오래 걸리는 것을 확인할 수 있습니다.

결론

전역 변수와 지역 변수는 접근 방식과 실행 속도에 차이가 있습니다. 전역 변수는 어디에서든 접근이 가능하지만 예상치 못한 변경이 발생할 수 있고, 지역 변수는 특정 함수 내에서만 접근이 가능하여 변수의 범위를 제한할 수 있습니다. 또한, 지역 변수를 사용하면 실행 속도도 향상될 수 있습니다. 따라서 변수의 스코프를 적절하게 결정하여 코드를 작성하는 것이 중요합니다.

참고 자료