2021. 5. 27. 20:28ㆍJava 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 입니다.
'Java Script' 카테고리의 다른 글
Day71 - [js]객체와 JSON함수 (0) | 2021.05.27 |
---|---|
Day71 - [js]클로저 (0) | 2021.05.27 |
Day71 - [js]함수, 익명함수, 화살표함수, 즉시실행함수 (0) | 2021.05.27 |
Day70 - [js]연산자, 배열, 조건문, 반복문, 제어문 (0) | 2021.05.27 |
Day70 - [js]변수, 간단한 함수 (0) | 2021.05.27 |