[typescript] 화살표 함수와 익명 함수의 상위 스코프 접근 가능 여부 비교

자바스크립트 및 TypeScript에서 화살표 함수와 익명 함수는 공통으로 사용되는 개념입니다. 하지만 두 함수 타입은 상위 스코프에 접근하는 방식에서 몇 가지 중요한 차이점이 있습니다. 이 블로그 포스트에서는 화살표 함수와 익명 함수의 상위 스코프 접근 가능 여부를 비교하고, 이러한 차이점이 코드 작성 시 주의해야 할 점에 어떤 영향을 미치는지 알아보겠습니다.

화살표 함수와 익명 함수

먼저, 화살표 함수와 익명 함수의 기본적인 개념을 간단히 살펴보겠습니다.

익명 함수

익명 함수는 이름이 없는 함수이며, 주로 콜백 함수로 활용됩니다. 예를 들어, setTimeout이나 이벤트 핸들러 등에 사용됩니다.

const myFunc = function() {
  // 함수 내용
};

화살표 함수

화살표 함수는 ES6부터 도입된 새로운 함수 정의 방식입니다. 화살표 함수는 function 키워드 대신 =>를 사용하며, 자동으로 this를 바인딩합니다.

const myArrowFunc = () => {
  // 함수 내용
};

상위 스코프 접근 가능 여부

이제 화살표 함수와 익명 함수가 상위 스코프에 접근하는 방식을 비교해 보겠습니다.

익명 함수

익명 함수에서는 상위 스코프의 변수를 직접 접근할 수 있습니다.

const num = 10;
const myFunc = function() {
  console.log(num); // 10
};
myFunc();

화살표 함수

화살표 함수는 상위 스코프에서의 this를 자동으로 바인딩하므로, 외부 스코프의 변수를 직접 접근할 수 있습니다.

const num = 10;
const myArrowFunc = () => {
  console.log(num); // 10
};
myArrowFunc();

주의할 점

화살표 함수와 익명 함수의 상위 스코프 접근 가능 여부의 차이에 주의해야 합니다.

  1. this의 바인딩: 익명 함수에서 this는 호출하는 컨텍스트에 따라 동적으로 바인딩됩니다. 반면 화살표 함수에서는 정적으로 상위 스코프의 this를 바인딩합니다.
  2. 클로저: 익명 함수에서는 클로저를 형성하여 상위 스코프의 변수에 접근할 수 있습니다. 반면 화살표 함수는 이미 자동으로 상위 스코프의 변수를 바인딩하므로 클로저를 형성할 필요가 없습니다.

결론

화살표 함수와 익명 함수는 각각의 특징을 가지고 있으며, 상황에 맞게 적절히 활용해야 합니다. 상위 스코프의 변수에 접근해야 하는 경우에는 이러한 차이점을 고려하여 함수를 선택하고, 코드를 작성해야 합니다.

이러한 개념을 이해하고 활용함으로써 TypeScript 및 JavaScript 코드를 더욱 견고하고 유연하게 작성할 수 있습니다.