지역변수 vs 전역변수

CODEDRAGON Development/JavaScript, jQuery, ...

반응형

 

 

 

지역변수 vs 전역변수

지역변수 함수 안에서 var를 사용해서 선언한 변수
함수가 끝나면 소멸
함수 안에서 var를 명시한 변수는 지역변수이기 때문에 함수 종료 후 메모리에서 소멸됨
함수 종료 후에 다시 지역변수 호출하면 오류 발생
전역변수 함수 밖에서 만들어진 모든 변수
(중요)함수 안에서 var 없이 만들어진 변수var를 명시하지 않고 전역변수 선언하는 것은 권장하지 않음
함수가 끝나도 메모리에 남아 있음

   

 

   

학습 내용

  • 함수 안에서 var로 명시한 지역 변수 호출
  • 함수 밖에서 var로 명시한 지역 변수 호출
  • 전역 변수 호출
  • 전역 변수 재 호출
  • 함수 안에서 var 없이 변수 선언(전역 변수)
  • var없이 전역 변수 명시 1, 2, 3

   

   

 

함수 밖에서 var로 명시한 지역변수 호출

소스 코드

function test1(){

//지역 변수

var i = 10;        

document.write(i + '<br>');

}

//함수 호출

test1();

document.write('<br>함수 종료 : ' + i + '<br>');        //에러 발생

   

 

 

출력결과   

함수 안에서 var를 명시한 변수는 지역변수이기 때문에 함수 종료 후 메모리에서 소멸되어 함수 종료 후에 다시 지역변수 호출하면 오류 발생

   

   

   

 

var 없이 전역 변수 선언

소스 코드

p;

function test6(){

p = 50;

document.write(p + '<br>');                

}

test6();

   

 

 

출력결과   

var를 명시하지 않고 전역변수를 만들 때 선언만 하고 초기화 하지 않은 상태에서 함수 안에서 초기화해서 호출하면 오류 발생함

   

   

 

전체 소스

<html>

<head>

<meta charset="UTF-8">

<title>지역변수 vs 전역변수</title>

<script type="text/javascript">

document.write('지역 변수 호출 ==================<br>');

function test1(){

//지역 변수

var i = 10;        

//지역 변수 호출

document.write(i + '<br>');

}

//함수 호출

test1();

//함수 밖에서 지역 변수 호출

//document.write('<br>함수 종료 : ' + i + '<br>');        //에러 발생

/* 함수 안에서 var 명시한 변수는 지역변수이기 때문에 함수 종료 메모리에서 소멸됨

함수 종료 후에 다시 지역변수 호출하면 오류 발생 */

   

document.write('<br> 전역 변수 호출 ==================<br>');

var j;        //전역 변수

function test2(){

j = 300;

document.write(j + '<br>');

}

test2();

   

document.write('<br> 전역 변수 호출 ==================<br>');

function test3(){

document.write(j + '<br>');

}

test3();

   

document.write('<br> 함수안에서 var 없이 변수 선언(전역 변수) ==================<br>');

function test4(){

//전역 변수, 권장하지 않음

m = 30;

document.write('함수 안에서 호출: ' + m + '<br>');

}

test4();

document.write('함수 종료 호출: ' + m + '<br>');

   

document.write('<br> var없이 전역 변수 명시1 ==================<br>');

n = 40;

function test5(){

document.write(n + '<br>');                

}

test5();

   

document.write('<br> var없이 전역 변수 명시2 ==================<br>');

//var 명시하지 않고 전역변수를 만들 선언만 하고 초기화 하지 않은 상태에서 함수 안에서 초기화해서 호출하면 오류 발생함

//p;

function test6(){

p = 50;

document.write(p + '<br>');                

}

test6();

   

document.write('<br> var없이 전역 변수 명시3 ==================<br>');

//var 명시하지 않고 전역변수 선언(권장하지 않음)

//권장하지 않음

//p;

q = 20;

function test7(){

q = 60;

document.write(q + '<br>');                

}

test7();

</script>

</head>

<body>

</body>

</html>

   

 

 

출력결과