Home

(자바스크립트 완벽 가이드) this 키워드의 모든 것 - 실행 컨텍스트부터 화살표 함수까지

Published in javascript
August 13, 2025
1 min read
(자바스크립트 완벽 가이드) this 키워드의 모든 것 - 실행 컨텍스트부터 화살표 함수까지

안녕하세요, “코딩하는곰”입니다!
20년 넘게 자바스크립트와 함께한 저자가 this 키워드의 핵심 원리를 파헤쳐봅니다.
“왜 this는 예상과 다르게 동작할까?”라는 질문에 실행 컨텍스트 기반으로 명쾌하게 답변드리겠습니다.
SEO 최적화된 이 글은 구글 검색 상위 노출을 위해 키워드 배치와 구조화에 특별히 신경 썼습니다.

1. 실행 컨텍스트와 this의 관계

자바스크립트에서 this실행 시점에 결정되는 동적 바인딩 특성을 가집니다.
주요 결정 요소는 다음과 같습니다:

// 1. 일반 함수 호출 (비엄격 모드)
function showThis() {
console.log(this); // window (브라우저)
}
showThis();
// 2. 메서드 호출
const obj = {
name: '곰',
logThis() {
console.log(this); // obj 객체
}
};
obj.logThis();
  • 호출 방식에 따른 this 값 변화:
    • 전역 공간: window(브라우저) / global(Node.js)
    • 메서드: 호출 주체 객체
    • 생성자 함수: 새로 생성된 인스턴스
    • 이벤트 핸들러: 이벤트 대상 DOM 요소

(자바스크립트 완벽 가이드) this 키워드의 모든 것 - 실행 컨텍스트부터 화살표 함수까지
(자바스크립트 완벽 가이드) this 키워드의 모든 것 - 실행 컨텍스트부터 화살표 함수까지


📱 앱 개발에 도전하고 싶다면, (자바 파일 업로드 완벽 가이드) MultipartFile로 쉽게 구현하는 방법를 참고해보세요.

2. 명시적 바인딩 기법 3가지

this를 직접 제어하는 고급 패턴을 소개합니다:

const user = { name: '곰' };
function greet() {
console.log(`Hello, ${this.name}!`);
}
// 1. call (즉시 실행)
greet.call(user); // "Hello, 곰!"
// 2. apply (배열 인수 전달)
function sum(a, b) {
console.log(this.base + a + b);
}
sum.apply({ base: 10 }, [1, 2]); // 13
// 3. bind (새 함수 생성)
const boundGreet = greet.bind(user);
boundGreet(); // "Hello, 곰!"

화살표 함수는 렉시컬 this를 사용하여 상위 스코프의 this를 고정합니다:

const timer = {
seconds: 0,
start() {
setInterval(() => {
this.seconds++; // 상위 this (timer 객체) 사용
console.log(this.seconds);
}, 1000);
}
};
timer.start();

(자바스크립트 완벽 가이드) this 키워드의 모든 것 - 실행 컨텍스트부터 화살표 함수까지
(자바스크립트 완벽 가이드) this 키워드의 모든 것 - 실행 컨텍스트부터 화살표 함수까지


회원가입이나 비밀번호 변경 시 안전한 비밀번호를 빠르게 생성할 수 있는 온라인 도구가 유용합니다.

3. 실전 예제로 보는 this 함정 회피법

Case 1: 콜백 함수의 this 소실

document.querySelector('button').addEventListener('click', function() {
console.log(this); // button 요소
setTimeout(function() {
console.log(this); // window (일반 함수 호출)
}, 1000);
});

해결책: 화살표 함수 또는 bind 사용 Case 2: 클래스에서의 this

class Bear {
constructor() {
this.name = '코딩하는곰';
}
logName() {
console.log(this.name);
}
}
const bear = new Bear();
setTimeout(bear.logName, 1000); // undefined

해결책: bind 또는 클래스 필드 문법 사용

(자바스크립트 완벽 가이드) this 키워드의 모든 것 - 실행 컨텍스트부터 화살표 함수까지
(자바스크립트 완벽 가이드) this 키워드의 모든 것 - 실행 컨텍스트부터 화살표 함수까지


AI가 분석한 로또 번호 추천을 받고 싶다면, QR코드 스캔과 통계 기능을 제공하는 지니로또AI 앱이 도움이 될 것입니다.

this 마스터하기는 자바스크립트 고급 개발자의 핵심 역량입니다.
이 글이 여러분의 코딩 여정에 도움이 되셨다면 블로그 구독과 공유 부탁드립니다!
다음 주제는 “프로토타입 체인의 완벽 이해”로 찾아뵙겠습니다.
궁금한 점은 댓글로 남겨주세요. 코딩하는곰이 직접 답변드립니다 :)

두뇌 건강을 위해 매일 스도쿠를 풀고 싶다면, AI 기반 힌트와 스토리 모드를 제공하는 스도쿠 저니를 다운로드해보세요.









최상의 건강을 위한 영양가득한 식품과 정보! life-plus.co.kr 바로가기
최상의 건강을 위한 영양가득한 식품과 정보! life-plus.co.kr 바로가기



다채로운 문화축제와 공연 소식을 공유하는 블로그! culturestage.co.kr 바로가기
다채로운 문화축제와 공연 소식을 공유하는 블로그! culturestage.co.kr 바로가기



비트코인 세계로의 첫걸음! 지금 가입하고 거래 수수료 할인 혜택 받으세요! bitget.com 바로가기
비트코인 세계로의 첫걸음! 지금 가입하고 거래 수수료 할인 혜택 받으세요! bitget.com 바로가기




Tags

#developer#coding#javascript

Share

Previous Article
이벤트 중첩 등록의 함정 removeEventListener로 문제 해결하기

Related Posts

(실전 프로젝트) localStorage를 활용한 나만의 메모장 웹 앱 만들기 - 데이터 저장부터 불러오기까지 완벽 구현
December 30, 2025
2 min