전역변수, 지역변수
전역변수
모든 범위에 영향력을 행사할 수 있는 변수
현실로 비유하면 지구자체를 전역변수라 볼 수 있다.
지역변수
특정 범위에만 영향력을 행사할 수 있는 변수
현실로 비유하면 지구 안에 있는 국가들이 가지고 있는 법체계는 그 국가 안에서만 한정되어있다. 이런 법체계를 지역변수라고 한다.
전역변수와 지역변수 예제
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"



