자바스크립트에서 변수는 기본적으로 객체 프로퍼티(property)와 같다.
자바스크립트 인터프리터가 실행됐을 때 가장 먼저 하는 일은 전역 객체를 생성하는 것이다. 전역 객체의 프로퍼티는 전역 변수인데, 전역 자바스크립트 변수를 선언할 경우 실질적으로 전역 객체의 프로퍼티를 정의하는 셈이다.
자바스크립트에서 Window 객체는 브라우저 창에 담긴 모든 자바스크립트 코드를 위한 전역 객체의 역할을 한다. 이 전역 Window 객체에는 전역 객체를 참조할 때 this 대신 사용할 수 있는 자가 참조(self-referential) window 프로퍼티가 포함돼 있다.
Window 객체에는 parseInt와 Math 같은 핵심적인 전역 프로퍼티를 비롯해 navigator와 screen과 같은 전역 클라이언트 측 프로퍼티가 정의돼 있다.
전역 객체와 변수를 사용하는 예제는 다음과 같다.
var number1 = "111"; console.log(number1); // 111, 전역 객체의 프로퍼티에 접근 console.log(this.number1); // 111, 'this'를 사용해 전역 객체를 참조 console.log(window.number1);// 111, 'window'를 사용해 전역 객체를 참조
함수 안에서 정의되는 지역 변수도 객체의 프로퍼티에 해당한다. 이 객체를 호출 객체(call object)라 하는데, 함수의 본문이 실행되는 동안 함수 인자와 지역 변수가 이 호출 객체의 프로퍼티로 저장된다. 지역 변수는 전역 변수와 이름이 같을 수 있지만 각기 별도의 객체에 저장된다.
지역 변수를 사용하는 예제는 다음과 같다.
x = 5; // 전역 변수 y = 5; // 전역 변수 function f(y){ // 인자 'y'는 호출 객체의 프로퍼티로 저장됨 var x = 15; // 지역 변수 console.log("local variable x = "+ x); console.log("local variable y = "+ y); } f(15); console.log("local global x = "+ x); console.log("local global y = "+ y);
위 코드를 실행한 결과는 다음과 같다.
local variable x = 15 local variable y = 15 local global x = 5 local global y = 5
자바스크립트 인터프리터가 함수를 실행하기 시작할 때마다 해당 함수에 대한 새로운 실행 컨텍스트를 생성한다. 실행 컨텍스트란 자바스크립트 코드가 실행되는 컨텍스트를 말한다. 컨텍스트에서 중요한 부분 중 하나는 변수가 정의되는 객체다.
함수에 속하지 않는 자바스크립트 코드는 전역 객체가 변수 정의를 위해 사용하는 실행 컨텍스트에서 실행된다.
모든 자바스크립트 함수는 지역 변수가 정의되는 자체적인 호출 객체와 함께 자체적으로 고유한 실행 컨텍스트에서 실행된다.
← 이전 | 홈 | 다음 → |