본문 바로가기
JavaScript

변수의 가시영역

by 완기 2020. 5. 20.
728x90
반응형

자바스크립트에서는

var x= 30;
var x= 20;

이와 같은, 코드를 실해했을 때, 자바 스크립트에서는 오류가 발생하지 않는다.

 

x=30;
document.write(x);

위와 같은 코드도 오류가 발생하지 않는다.

전역 객체의 속성 추가가 되었기 때문이다.

 

자바에서 this.x와 같은 개념으로 window 객체에 30이란 값이 지정되어있다.

x=30;
document.write(window.x);

이와같이 생략이 가능하고 생략하지 않아도 잘 실행이 된다.

크롬으로 실행 한 화면.

        var x = 20;//전역 객체의 속성

        function test() {
            var x = 30;
            document.write(window.x);
        }
        test();

을 하게되면 20이 출력된다. 

 

 

그러나 

 

var x = 20; //전역 객체의 속성

        function test() {
            x = 30;
            document.write(window.x);
        }
        test();

함수안에 var을 지우게 되면 함수 안에 x값이 전역 객체에 다시 저장되어서 이번에는 30이 출력됨을 알 수 있다.

 

변수에 값을 대입하기 전에 변수 앞에 var을 붙여주지 않으면 전역 객체의 속성으로 대입이된다.

 

참으로 알다가도 모를 놈이다.

{
           var a=1;
}
       document.write(a);

또한, 자바 스크립트에서는 중괄호 {} 의 의미가 없다. 

 

위 블럭을 실행해봐도 1이 출력이 되는 것을 알 수 있다.

document.write(a + "<br>"); 
{
            var a = 1;
}
        document.write(a);

이 코드에서도 var이 붙냐 안붙냐에 따라 에러가 나고 안나고가 결정이 되는데,

 

위 코드의 경우, document.write(a);에서는

값이 아직 대입이 되어있지 않아서 undefine값이 나오지만 5번째 라인에서는 1이 대입이 되었기 때문에 

 

이와 같이 선언 되어있는 걸 알 수 있다.

728x90
728x90

댓글