지역변수와 전역변수

  • 지역변수
    • 함수 안에서 var를 사용해서 선언한 변수
    • 함수가 끝나면 소멸됨

 

  • 전역변수
    • 함수 밖에서 만들어진 모든 변수
    • 함수 안에서 var 없이 만들어진 변수
    • 함수가 끝나도 메모리에 남아 있음

 

  • 지역변수 사용
function test1() {
	var i = 10;	// 지역변수
	document.write(i);
}
test1();

// document.write(i);	에러 발생!!

 

  • 전역변수 사용
var j;    // 전역변수
function test2() {
	j = 200;
	document.write(j + '<br>');
}
test2();

function test3() {
	document.write(j + '<br>');
}
test3();

/* [출력결과]
	200
	200 */

 

  • 전역변수의 var를 생략할 경우, 변수의 선언과 동시에 초기화해야 함 : 가능하나 권장하지 않음
// a; 에러 발생!!
a = 10;
function test4() {
	a = 100;
	document.write(a + '<br>');
}

test4();

 

  • 함수 내에서 var를 명시하지 않고 변수를 선언하면 전역변수가 됨
function test5() {
	m = 300;	// 전역변수
	document.write(m + '<br>');
}
test5();

function test6() {
	document.write(m + '<br>');
}
test6();

/* [출력결과]
	300
	300 */

 

 

let 과 const

  • Block Level Scope(영역)를 가짐
    • let : 변수를 정의할 때 사용
    • const : 상수를 정의할 때 사용
function test() {
	let a = 10;
	document.write(a + '<br>');
	
	// let a = 20;	// 오류 발생!! : 이미 선언한 변수명과 동일한 변수명으로 선언할 수 없음
	// document.write(a+'<br>');
	
	const b = 20;
	document.write(b + '<br>');
	
	// b = 50;	// 오류 발생!! : 상수에 값을 다시 할당 할 수 없음
	// document.write(b + '<br>');
}
test();

/* [출력결과]
	10
	20 */