피드로 돌아가기
Dev.toFrontend
원문 읽기
Angular 'this' 유실 방지, 화살표 함수의 핵심 원리 분석
Angular & the "Disappearing this": Why Arrow Functions are More Than Just Syntax Sugar
AI 요약
Context
JavaScript의 dynamic this 특성으로 인한 런타임 오류 발생. 일반 함수 사용 시 호출 환경에 따라 this가 undefined 또는 window 객체로 변경되는 구조. Angular 컴포넌트 상태 업데이트 실패 및 TypeError 유발.
Technical Solution
- Lexical Scoping 원리를 이용해 함수 선언 위치의 this를 유지하는 화살표 함수 도입
- 자체적인 this 바인딩을 생성하지 않고 상위 스코프의 this를 그대로 참조하는 설계
- ES5 컴파일 시 var _this = this와 같이 외부 변수에 참조를 저장하던 기존 방식의 언어적 내재화
- .bind(this)를 통한 수동 바인딩의 번거로움과 추가 함수 생성 오버헤드 제거
- RxJS의 map, catchError, subscribe 등 콜백 기반 비동기 파이프라인 내 컴포넌트 인스턴스 접근 보장
- Angular Signals 도입 이후에도 class 기반 상태 관리를 위한 안정적인 this 참조 구조 유지
Key Takeaway
함수의 정의 위치와 호출 위치의 괴리로 발생하는 컨텍스트 유실 문제를 언어 차원의 Lexical Scoping으로 해결하는 설계 원칙.
실천 포인트
Angular 컴포넌트 내 비동기 콜백이나 RxJS 연산자 사용 시 반드시 화살표 함수를 사용하여 컨텍스트 유실을 방지할 것