전역변수, 지역변수

전역변수, 지역변수


전역변수

모든 범위에 영향력을 행사할 수 있는 변수

현실로 비유하면 지구자체를 전역변수라 볼 수 있다.


지역변수

특정 범위에만 영향력을 행사할 수 있는 변수

현실로 비유하면 지구 안에 있는 국가들이 가지고 있는 법체계는 그 국가 안에서만 한정되어있다. 이런 법체계를 지역변수라고 한다.


전역변수와 지역변수 예제

var globalV = "전역변수";

function func() {
	var localV = "지역변수";

	console.log(globalV);
	console.log(localV);
}

func();


localV가 존재하지 않는 걸로 인식

var globalV = "전역변수";

function func() {
	var localV = "지역변수";
}

console.log(globalV);
console.log(localV);

전역변수는 함수 안쪽, 바깥쪽 모든 영역에 영향력을 발휘한다

함수 안에서 만들어진 변수를 지역변수라 말하고 함수안에서만 영향력을 발휘할 수 있다.

함수를 기준으로 전역과 지역이 나뉘어진다




과거 자바스크립트 vs 최신 자바스크립트(es6)

이때까지 말한 내용은 var를 사용한 과거 자바스크립트에 대한 내용이다

최신 자바스크립트는 변수를 만들 때 let, const를 사용할 수 있다. 이때 전역변수와 지역변수를 구분짓는 기준점이 달라진다.




변수를 만들 때 주의점


동일한 변수명을 함수 안 바깥쪽에 생성하고 호출할 때

gv라는 동일한 변수명이 함수 안, 밖에 있음

함수 안쪽에서 출력시킨 gv는 함수 안에서 만들어진 gv, 즉 지역변수를 출력시켜준 것

함수 바깥쪽에서 찾고있는 gv는 함수안에는 접근할 수가없으니 바깥쪽에 있는 변수중에 gv가 있는지 탐색하고 존재하기 때문에 전역변수를 출력시켜준 것

var gv = "전역변수";

function func() {
	var gv = "지역변수";
	console.log(gv);
}

func();

console.log(gv);


위와 같은 상황에서 함수 안에 var를 제거시

양쪽 모두 지역변수로 출력된다.

그 이유는 'gv = "지역변수";'가 변수가 아니라(var를 사용하지 않음) 변수 안에 있는 값을 바꾼 것이기 때문

예전에 배운 '변수 안에 있는 값을 바꿀 수 있다' 와 같은개념

즉, 전역변수라는 값이 gv에 들어가있는데 지역변수로 값을 바꾸어 주어서 둘다 지역변수로 나타나는 것

var gv = "전역변수";

function func() {
	gv = "지역변수";
	console.log(gv);
}

func();

console.log(gv);




헷갈려하는것

많은 사람들이 함수가 아니라 중갈호를 기준으로만 전역, 지역으로 분리되는거 아닌가라고 오해할 수 있음

중갈호 바깥쪽에서 찾고있는 lv가 중갈호 안에 있는 변수에 접근 할 수 있다, 지역변수가 아니라 전역변수라는 뜻

전역과 지역을 구분짓는 것은 중갈호가 아니라 함수이다

var gv = "전역변수";

if(true) {
	var lv = "지역변수????"
}

console.log(gv);
console.log(lv);


전역변수를 간편하게 확인

콘솔로그에서 자바스크립트 코드를 입력할 수 있다.

브라우저를 제어할때 사용되는 윈도우라는 객체가있음

모든 전역변수는 윈도우라고 하는 객체에 property(key, value) 로 들어가있다.

var gv = "전역변수";
var aaa = "aaa"




좋은 웹페이지 즐겨찾기