전역변수 차이
javascript 2017. 6. 15. 17:32
최근에 자바스크립트 기초가 없었다고 느껴져서 작성 합니다.
전역변수는 전역에서 사용하는 변수를 의미 합니다.
작성은 다음과 같습니다
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 객체는 브라우저의 최상위 객체입니다.
전역에서 변수선언을 하면 윈도우 객체로 들어가게 됩니다.
'javascript' 카테고리의 다른 글
프로토타입(Prototype) (0) | 2017.08.28 |
---|---|
[함수] 매개변수를 선언하지 않고 매개변수의 값에 접근하는 방법 (0) | 2017.07.16 |
자바스크립트 undefined 와 null 의 차이 (2) | 2017.06.11 |
setInterval(), clearInterval(), setTimeout() (0) | 2015.05.07 |
객체의 속성 추가와 제거 (3) | 2015.05.05 |