JavaScript 변수의 수명(lifetime)은 변수가 선언되는 순간 시작됩니다.
var rank;
위 코드에서 rank 변수는 선언과 동시에 메모리에 생성되며, 이후 어디서 소멸하는지는 변수가 어떤 범위(scope)에서 선언되었느냐에 따라 달라집니다.
지역 변수(Local Variable)의 수명
지역 변수는 해당 변수가 정의된 함수 내부에서만 접근할 수 있습니다. 함수의 매개변수(parameter)도 항상 그 함수 안에서만 유효한 지역 변수로 취급됩니다.
즉, 함수의 실행이 끝나는 시점에 지역 변수는 함께 삭제되며 더 이상 사용할 수 없습니다.
전역 변수(Global Variable)의 수명
전역 변수는 코드 어디에서든 정의할 수 있고, 프로그램 전체 범위(global scope)에서 접근 가능합니다.
전역 변수의 수명은 다음과 같습니다.
- 웹 브라우저를 완전히 닫으면 전역 변수도 함께 삭제됩니다.
- 단, 같은 브라우저 창에서 새 페이지를 로드하는 경우에는 전역 변수가 그대로 유지됩니다.
변수 스코프 예제
아래 코드를 실행하면 JavaScript에서 변수의 스코프가 실제로 어떻게 동작하는지 확인할 수 있습니다.
<html>
<body onload = checkscope();>
<script>
<!--
var myVar = "global"; // 전역 변수 선언
function checkscope( ) {
var myVar = "local"; // 지역 변수 선언
document.write(myVar);
}
//-->
</script>
</body>
</html>이 예제에서는 같은 이름의 myVar 변수가 전역과 지역에 각각 선언되어 있습니다. 함수 내부에서 출력되는 값은 "local"입니다. 함수 안에서 지역 변수가 우선적으로 사용되기 때문입니다.
참고: var 대신 let과 const 사용하기
현대 JavaScript(ES6 이상)에서는 var 대신 블록 단위 스코프(block scope)를 가지는 let과 상수 선언용 const를 사용하는 것이 권장됩니다. 이 키워드들을 사용하면 의도하지 않은 변수 덮어쓰기를 방지하고, 코드의 예측 가능성과 유지보수성이 크게 향상됩니다.