포스트

자바스크립트에서 this 키워드와 typeof 연산자의 동작 이해하기

this 키워드가 어떻게 초기화되지 않은 상태에서 작동하는가?

자바스크립트에서 this 키워드는 현재 실행 문맥에 따라 다른 객체를 가리킵니다. 함수 내에서 this를 사용하면, 함수가 호출되는 방식에 따라 this가 가리키는 객체가 달라집니다. 그렇다면, 변수에 값이 할당되기 전에 typeof this를 사용하면 어떻게 될까요?

초기화 되지 않은 상태에서 this

자바스크립트에서는 this가 아직 어떤 객체도 가리키지 않을 때, 기본적으로 전역 객체를 가리킵니다. 웹 브라우저 환경에서는 이 전역 객체가 window입니다. 따라서 초기화되지 않은 상태에서 typeof this를 실행하면, 전역 객체의 타입을 나타내게 됩니다.

typeof 연산자의 작동 방식

typeof 연산자는 변수나 표현식의 타입을 문자열로 반환합니다. typeof 연산자는 실제 값이 아니라, 값의 ‘타입’만을 알려주기 때문에 초기화되지 않은 변수나 null, undefined 같은 값을 대상으로도 사용할 수 있습니다.

예시 코드 분석

이해를 돕기 위해 다음과 같은 코드를 살펴보겠습니다.

1
console.log(typeof this); // "object"

여기에서 typeof this는 “object”를 출력합니다. 이는 this가 전역 객체를 가리키고 있으며, 전역 객체의 타입이 object라는 것을 알려줍니다.

예외 상황: Strict Mode

자바스크립트의 ‘Strict Mode’(엄격 모드)에서는 this의 동작이 약간 달라집니다. 엄격 모드에서는 전역 객체 대신 undefined를 반환합니다.

1
2
"use strict";
console.log(typeof this); // "undefined"

정리

자바스크립트에서 this는 현재 실행 문맥에 따라 동적으로 바뀝니다. 초기화되지 않은 상태에서 typeof this를 실행하면, 기본적으로 전역 객체의 타입을 반환합니다. typeof 연산자는 값의 타입만을 체크하기 때문에, 초기화되지 않은 변수나 특별한 값들에 대해서도 문제없이 작동합니다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.