본문 바로가기

자바스크립트/변수

[자바스크립트] -스코프 / 지역변수(로컬변수) / 전역변수(글로벌변수)

스코프란? scope

변수를 선언하고 사용할 때 변수가 적용되는 유효범위를 뜻함.
변수가 유효하게 쓰일 수 있는 영역을 가리키는 것이다. 
자바스크립트에서 함수에서 변수를 사용할 때 영역에 주의해야한다. 
한 함수 안에서만 사용하고 다른 함수에서 사용할 수 없는 변수가 있는가 하면, 
어느 함수에서나 다 사용할 수 있는 변수가 있다. 


한 함수에서만 사용할 수 있는 변수를 '지역변수' 또는 '로컬변수'라고 한다.

어느 함수에서나 다 사용할 수 있는 변수를 '전역변수' 또는 '글로벌변수'라고 한다.  

( 전역변수는 script부분안에서 어디든지 접근할 수 있기에 어디서 값을 바꿀지 몰라 위험해서 되도록 안쓴다.

주로 지역변수를 쓴다. 함수 안에 들어있으면 지역변수. )
 

 var처럼 전역에서 쓰이는 변수는 '함수 레벨의 스코프를 가진다'라고 표현하고 스크립트 소스 전체를 의미한다. 

<script>   </script> 이 안에 있는 것 : 함수 레벨의 스코프 또는 함수 영역


1. 함수 안에서만 쓸 수 있는 지역변수 

지역변수는 함수 안에서 선언하고, 함수 안에서만 사용한다. 
지역변수를 선언하려면 예약어 var와 함께 변수 이름을 함수 안에서 지정해야한다. 

 

지역변수는 비유하자면 건전지와 비슷하다. 

건전지는 기계 안에 들어있으면 그 기계안에서만 사용할 수 있듯이 지역변수로 만들어놓으면 그 함수 안에서만 사용할 수 있다.  

 function addNum() {
        var num1 = 2;
        var num2 = 3;

        var sum = num1 + num2;
        document.write(sum);
      }


 위에서 num1 , num2가 지역변수. 


  sum 변수는 지역변수로, 함수 안에만 있고 그 밖에 없기 때문에 밖에서 콘솔로그로 sum을 부르면 값이 없다고 에러가 뜨게 된다. 

(sum변수가 addNum함수 안에서 선언되었기 때문에 유효범위를 벗어나서 에러메세지가 뜨는 것.)

 

그래서 함수 안으로 콘솔로그를 데려오면 값이 나오는 것을 확인할 수 있다. 

 


2. 스크립트 전역에서 쓸 수 있는 전역변수

전역변수는 적용범위를 제한하지 않고 쓸 수 있다. 
즉 전역 변수는 지역변수와 달리 스크립트 소스 코드 전체에서 사용할 수 있다. 
비유하자면 건전지가 기계 안에 있지 않고 집안에 있다면 어느 기계든 건전지를 사용할 수 있듯이 밖에 나와있는 건전지와 비슷하다. 
      
변수를 전역으로 사용할 때에는 함수 밖에서 선언하거나, var 예약어를 생략하고 선언해야한다. 
함수 안에서 var라는 단어를 생략하고 쓰면 전역변수가 된다. 

** var라는 단어를 생략하면 전역변수로 쓸 수 있다. 

함수 안에다 result2를 썼어도 var 키워드가 없어서 전역변수가 되었고, 함수 밖에다가 콘솔로그 result2를 해도 값이 나오게 된다.