그알것 — 그럼에도 알아야 할 것들
홈질문커뮤니티
로그인
그알것 — 그럼에도 알아야 할 것들

Service

  • 홈
  • 소개
  • 질문
  • 커뮤니티

My

  • 내 워크스페이스
  • 저장한 질문
  • 작성한 답변

Policy

  • 이용약관
  • 개인정보처리방침
  • 문의

© 2026 그알것 · What Still Matters

질문 목록JavaScript
JavaScript

상황에 따라 this 바인딩이 어떻게 이뤄지는지 설명해주세요.

실무4/5
설계3/5
인간3/5
기초5/5

면접관의 질문 의도

5가지 규칙을 외워 줄줄이 읊을 수 있는지가 아니라, 한 호출 지점을 보고 "이 자리에서 `this`가 무엇이 될지"를 우선순위로 판정할 수 있는지 보려는 질문이다. 답에 따라 화살표 함수·bind·클래스 메서드 위임 같은 후속이 갈린다.

큐레이션 답변

학습 자료

JavaScript의 this는 함수가 "어디에 선언됐는가"가 아니라 "어떻게 호출됐는가"로 결정된다. 일반 함수 호출은 strict 모드면 undefined, 그 외엔 전역 객체를 가리키고, 객체 메서드 호출은 점 앞의 객체, new는 새로 생성된 인스턴스, call·apply·bind는 명시한 객체를 바인딩한다. 화살표 함수는 자체 this를 갖지 않고 선언 시점의 상위 스코프 this를 그대로 빌려 쓰며, call·bind로도 바뀌지 않는다. 그래서 같은 함수라도 누가 어떤 식으로 호출했느냐에 따라 this가 매번 다르게 결정된다.

좋은 답변 구조

  1. 01this가 선언이 아닌 호출 방식으로 결정된다는 원칙을 한 줄로 박는다
  2. 02기본·암묵·명시·new·화살표 5가지 바인딩을 호출 형태와 함께 정리한다
  3. 03여러 규칙이 동시에 걸릴 때의 우선순위(new > 명시 > 암묵 > 기본, 화살표는 예외)를 짚는다
  4. 04메서드를 콜백으로 넘기거나 이벤트 핸들러로 등록할 때 detach가 어떻게 일어나는지로 마무리한다

자주 실수하는 포인트

함수가 선언된 위치를 보고 this를 추측하고 호출 지점은 보지 않는다
화살표 함수의 this를 call·bind로 바꿀 수 있다고 오해한다
객체에서 메서드를 꺼내 변수에 담거나 콜백으로 넘기면 암묵 바인딩이 풀린다는 점을 잊는다
클래스 메서드를 그대로 이벤트 핸들러로 넘기면서 bind나 화살표 필드를 빼먹어 this가 undefined가 된다

실무 맥락

  • addEventListener로 클래스 메서드를 핸들러로 등록하는 UI 코드
  • 비동기 콜백·Promise then·setTimeout 안에서 객체 메서드를 호출하는 자리
  • React 클래스 컴포넌트나 레거시 prototype 기반 코드베이스
  • Vue 옵션 API에서 methods를 화살표로 잘못 정의해 this가 비는 경우

본인 경험에 녹이는 힌트

이벤트 핸들러에서 this가 undefined로 떨어진 버그를 잡은 경험이 있다면 어떤 호출이 바인딩을 풀었는지로 풀 수 있다

클래스 메서드를 일관되게 화살표 필드나 bind로 통일한 컨벤션을 잡아 본 적이 있다면 그 결정 기준을 정리할 수 있다

setTimeout·Promise 콜백 안에서 객체 메서드를 호출하다 this가 새 본 경험이 있다면 화살표·bind 선택 사례로 이어 쓸 수 있다

코드 리뷰에서 "이 줄의 this는 무엇인가"를 따라가 본 경험이 있다면 호출 지점 추적 사례로 연결하기 좋다

커뮤니티 인기 답변

전체 0개

아직 공개된 답변이 없어요. 첫 공개 답변을 남겨보세요.

관련 꼬리 질문

Q1strict 모드와 비strict 모드에서 일반 함수 호출의 this는 어떻게 달라지나요
Q2여러 바인딩 규칙이 겹칠 때 어떤 우선순위로 결정되나요
Q3클래스 메서드를 콜백으로 넘길 때 bind와 화살표 필드 중 무엇을 고르나요
Q4화살표 함수에 call·bind를 써도 this가 바뀌지 않는 이유는 무엇인가요
아직 답을 쓰지 않았어요.
큐레이션 답변과 다른 사람 답변을 보고, 자기 언어로 답을 정리해보면 학습 효과가 가장 큽니다.
목차
  • 01면접관의 질문 의도
  • 02큐레이션 답변
  • 03좋은 답변 구조
  • 04자주 실수하는 포인트
  • 05실무 맥락
  • 06본인 경험에 녹이는 힌트
  • 07커뮤니티 인기 답변준비중
  • 08관련 꼬리 질문