ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바스크립트의 전역 객체(Global object)
    프론트엔드/JavaScript 2020. 9. 14. 01:45
    <body>
        <script>
    
            var name = "철수";  // 전역 변수 name 선언
            
            function call(name){  // 전역 함수 call 선언
                console.log(name);
            }
    
            console.log(name);  // "철수" 출력
            call("철수");  // "철수" 출력
    
        </script>
    </body>

     

    위와 같은 예시를 보면 전역 변수, 전역 함수를 선언하고 실행까지 하는 것을 볼 수 있다.

     

    일반적으로 함수명, 변수명을 이용하면 해당 함수와 변수에 설정된 데이터를 이용할 수 있다.

     

    그렇다면 다음은 어떨까?

     

    <body>
        <script>
    
            var name = "철수";  // 전역 변수 "철수" 선언
            function call(name){  // 전역 함수 "call" 선언
                console.log(name);
            }
    
            console.log(window.name);  // "철수" 출력
            window.call("철수");  // "철수" 출력
    
        </script>
    </body>

     

    변수와 함수를 호출할 때 앞에 window라는 단어가 붙었다. 그러나 실행은 똑같이 된다.

     

    이게 무슨 뜻일까? 자세히 보면 그것을 알 수 있다.

     

    <body>
        <script>
    
            let name = {  // 리터럴 객체 name 생성
                a: "철수",
                b: "영희"
            }
    
            console.log(name.a);  // "철수" 출력
            console.log(name.b);  // "영희" 출력
    
        </script>
    </body>

     

    우리는 지금까지 객체를 만들고 그 안에 프로퍼티를 불러올 때 점 ( . )을 찍었던 것을 기억할 것이다.

     

    위의 예시를 봐도 그렇다.

     

    즉 함수나 변수를 점을 찍어서 불러올 수 있다는 것은 window의 정체는 객체란 것을 알 수 있다.

     

    window란 자바스크립트가 브라우저에서 돌아갈 때 모든 객체들의 최상위 객체로서 전역객체라(Global Object)라고도 부른다.

     

    전역객체는 눈에 보이지 않고 우리가 설정해주지 않았다.

     

    그리고 각종 함수, 변수를 호출할 때 window란 것이 생략되어있다.

     

    하지만 이는 사용상의 편의를 위한 것으로 실제로는 엄연히 존재하고 있는 객체다.

     

    우리가 별도로 만들지 않았고 호출하지 않았음에도 자바스크립트에서 우리가 설정하는 전역 함수, 전역 변수는 모두 이 전역 객체의 프로퍼티로서 설정되는 것이다.

     

    그리고 이러한 전역 객체를 자바스크립트 코드 상에선 window로 표기하고 있다.

     

    그리고 다른 언어에선 window 이외에도 다른 명칭으로 지칭한다.

     

    하지만 결국 둘은 같은 전역 객체다.

Designed by Tistory.