전역변수 차이

javascript 2017. 6. 15. 17:32

728x90
반응형

최근에 자바스크립트 기초가 없었다고 느껴져서 작성 합니다.


전역변수는 전역에서 사용하는 변수를 의미 합니다.

작성은 다음과 같습니다

1
2
3
4
var a1 = "global 01";
function test(){
    a2 = "global 02";
}
cs


1번 라인에 있는건 척 봐도 아실꺼 같고

2~4 번 라인에 있는건 이게 전역변수인가? 라고 생각 하실 수 있습니다.


함수 내부에서 예약어 'var' 가 없는 상태로 변수의 값을 대입할땐 전역변수로 만들어 집니다.


우선 a1을 출력해보겠습니다. 다음과 같이 작성하면 어떤 결과를 출력할까요?

1
2
var a1 = "global 01";
console.log(a1);
cs

이렇게 나옵니다. 제대로 변숫값이 잘 찍혀서 나오고 있네요.


그러면 이건 과연 어떻게 뜰까요?

1
2
3
4
function test1(){
    a2 = "전역변수2";
}
console.log(a2);
cs

a2 is not defined 라고 에러 문구를 출력합니다.

왜 전역변수라면서 정의 되지 않았다는 걸까요? 그건 test1 이라는 함수를 실행시키지 않았기 때문입니다.


test1 함수를 실행 시킨 후 console.log(a2)를 찍어보면 잘 나옴니다. test1 함수를 실행시켜 그 안의 로직이 동작하게 했어요.


이런것도 해볼까요? test1 함수를 실행시켰다는 가정 하에 다음과 같이 콘솔을 찍어봤습니다.

1
2
3
4
console.log(a1);
console.log(window.a1);
console.log(a2);
console.log(window.a2);
cs

보시다 시피 원하는 대로 원하는 값을 출력했어요.

근데 window 를 변수 앞에 적어도 왜 에러가 안뜨는걸까요?


그래서 저 window가 뭐길래 궁금해서 한번 찍어봤습니다.

1
console.log(window);
cs

window는 객체(object) 형태로 {키:값,...}을 가지고 있습니다.

window 객체는 브라우저의 최상위 객체입니다.

전역에서 변수선언을 하면 윈도우 객체로 들어가게 됩니다.


반응형