min

변수의 생명주기 (variable life cycle) 본문

자바스크립트

변수의 생명주기 (variable life cycle)

minprogramming 2023. 12. 12. 09:40

1. 변수의 생명주기의 정의

 : 변수의 생명주기의 의미는 해당 변수가 메모리에 얼마나 존재하고 있는지를 나타내는 것이다. 정확하게 말하면 변수가 메모리에 들어가는 순간부터 시작해 사라지는 순간까지를 의미한다.

 

2. 지역 변수의 생명주기

: 지역 변수의 생명주기는 해당 지역변수를 담고 있는 함수의 생명주기와 동일시 된다. 실행 컨텍스트에서 variable environment와 lexical environment 정확히는 레코드에 식별자에 대한 정보가 들어간다. 그리고 이 식별자에 대한 정보는 실행 컨텍스트가 실행 컨텍스트 스택에서 없어질 때까지 메모리에 잔류하고 있다.

 

3. 전역 변수의 생명주기

: 전역 변수의 생명주기는 해당 전역변수를 담고 있는 전역 컨텍스트의 생명주기와 동일시 된다. 이 때 전역 컨텍스트란 다른 실행 컨텍스트가 생기기 이전에 실행컨텍스트 스택에 존재하고 있는 컨텍스트로  잔류하고 있는 시간이 지역 변수를 담고 있는 실행 컨텍스트에 비해서 많을 수 밖에 없다. 그렇기에 전역 변수를 설정할 때는 조심해야한다. 그 이유는 의도치 않게 전역 변수가 메모리를 계속 잡아먹고 있게 된다면 이로 인해서 불 필요한 메모리를 가질 수 있기 때문이다.

 

4. 전역 변수의 위험성에 대한 대첵

: 전역 변수는 앞서 설명했던 것와 같이 생명주기가 지역 변수에 비해서 높은 편이기 때문에 사용할 때 조심해야 한다. 그래서 우리는 이 위험성을 방지하기 위해서 전역 변수를 지역 변수로 바꿀 필요가 있다. 예를 들어 다음과 같은 코드가 있다고 하자. 

//수정 전...
let a = 3;

function test1() {
	console.log(a)
}

function test2() {
	console.log(a)
}
// 수정 후...

function outer() {
	let a = 3;
    
    function test1() {
    	console.log(a)
    }
    
    function test2() {
    	console.log(a)
    }
}

outer()

이런 방식 말고도 각각의 상황에 맞춰서 불 필요한 메모리를 잡을 수 있다.