[JavaScript] 자바스크립트 화살표 함수와 일반 함수의 this
글 작성자: 망고좋아
반응형
🎯 화살표 함수와 일반 함수의 this
- 화살표 함수의 this는 호출된 함수를 둘러싼 실행 컨텍스트를 가리킨다.
- 화살표 함수는 함수를 선언할 때 this에 바인딩할 객체가 정적으로 결정된다.
- 동적으로 결정되는 일반 함수와는 달리 화살표 함수의 this 언제나 상위 스코프의 this를 가리킨다. 이를 Lexical this라 한다.
- 즉, 화살표 함수가 선언될 때의 this를 가리킨다. 그리고 그 값을 계속 유지한다.
- 화살표 함수는 call, apply, bind 메소드를 사용하여 this를 변경할 수 없다.
- 일반 함수의 this는 새롭게 생성된 실행 컨텍스트를 가리킨다.
- 즉, 함수를 호출할 때 함수가 어떻게 호출되었는지에 따라 this에 바인딩할 객체가 동적으로 결정
let o = {
method() {
console.log("context : ", this); // o
let f1 = function() {
console.log("[f1] this : ", this);
}
let f2 = () => {
console.log("[f2] this : ", this);
}
f1(); // global
f2(); // o
},
};
o.method();
- f1()은 실행될 때 완전히 새로운 컨텍스트를 생성한다.
- 이때 f1에 바인딩된 컨텍스트가 없으므로 this는 global을 가리킨다.
- f2()는 함수 컨텍스트를 생성하며 this 변수는 부모의 컨텍스트를 가리킨다.
- 따라서 this는 o가 된다.
반응형
'프로그래밍 > JavaScript' 카테고리의 다른 글
[JavaScript] 자바스크립트 클로저란? (0) | 2021.11.13 |
---|---|
[JavaScript] 자바스크립트에서 함수는 일급 객체(first-class-object)이다. (0) | 2021.11.13 |
[JavaScript] 자바스크립트 실행 컨텍스트 (0) | 2021.11.13 |
[JavaScript] 자바스크립트 함수가 실행되는 과정 (0) | 2021.11.13 |
[JavaScript] 자바스크립트 animate(), 이미지 슬라이드 구현 (2) | 2021.11.10 |
댓글
이 글 공유하기
다른 글
-
[JavaScript] 자바스크립트 클로저란?
[JavaScript] 자바스크립트 클로저란?
2021.11.13 -
[JavaScript] 자바스크립트에서 함수는 일급 객체(first-class-object)이다.
[JavaScript] 자바스크립트에서 함수는 일급 객체(first-class-object)이다.
2021.11.13 -
[JavaScript] 자바스크립트 실행 컨텍스트
[JavaScript] 자바스크립트 실행 컨텍스트
2021.11.13 -
[JavaScript] 자바스크립트 함수가 실행되는 과정
[JavaScript] 자바스크립트 함수가 실행되는 과정
2021.11.13