Day71 - [js]전역변수 vs 지역변수

2021. 5. 27. 20:28Java Script

이번에는 java script의 전역변수와 지역변수에 대해서 알아 봅시다.

 

전역변수 vs 지역변수

java 에서 변수는 {} 를 기준으로 지역변수가 되었었죠?

 

java script의 var 변수는 {} 기준이 아닌, 함수를 기준으로 지역변수가 됩니다.

 

즉. if 문, switch 문 에서 변경 및 초기화 된 변수는 전역변수 이며, 함수에서만 변경 및 초기화 된 변수는 지역변수 입니다.

 

해당 코드를 보시면, num1 은 if문 밖에서 50으로 선언 및 초기화 되었고, if 문에서 다시 한번 60으로 선언 및 초기화가 되었습니다.

java 에서는 이렇게 사용할 경우, if문이 끝나는 순간, 60을 가지고 있는 num1은 사라집니다.

그런데, java script 에서는 해당 num1 이 남아 있어요. 즉 60이 나옵니다.

아래처럼 함수 내에서 선언 된 변수는 사라지게 됩니다.

이렇게 사용을 하면, num2 는 100 이 됩니다. ( 함수에서 변경 및 선언 초기화 된 변수는 사라짐 )

이렇게 되는 이유는, java 는 블록 단위 스코프 를 기반으로 하고 있고, java script의 var 변수는 함수 단위 스코프를 기반으로 하고 있기 때문 입니다.

 

java script 에서는 이러한 단점을 보완하기 위해서 let 변수를 만들 었는데요

let 변수는 java 와 똑같이 블록 단위 스코프 를 기반으로 하고 있습니다.

 

let 변수는 블록 단위 스코프를 기반으로 하고 있기 때문에 if문 안에서 사용된 num3 는 지역변수가 되서 200이라는 값은 사라지게 됩니다. 그래서 console.log 로 나오는 num3은 if문 바깥에서 선언 및 초기화 된 100 입니다.

 

함수에서 사용되는 것도 마찬가지로 함수 안에서 사용된 num4는 지역변수 입니다.

그래서, console.log(num4) 로 나오는 num4는 함수 바깥에서 선언 및 초기화 된 100 입니다.