[javascript] 익명 함수와 콜백 함수의 스코프 관련 특징

자바스크립트에서 익명 함수(anonymous function)와 콜백 함수(callback function)는 어휘적 스코프(lexical scope)를 가지고 있습니다. 이는 함수가 선언된 시점에 상위 스코프의 변수에 접근할 수 있다는 의미입니다.

익명 함수

익명 함수는 함수 표현식으로 정의되며, 함수 이름이 없습니다. 주로 변수에 할당되어 사용되지만, 다른 함수 내부에서도 익명 함수를 선언하여 사용할 수 있습니다.

예시:

const sayHello = function() {
  console.log('Hello!');
}

sayHello();

위 예시에서 sayHello 함수는 익명 함수로 선언되었습니다.

콜백 함수

콜백 함수는 다른 함수의 인자로 전달되는 함수로, 이벤트 핸들링이나 비동기 작업에서 주로 사용됩니다. 콜백 함수도 익명 함수로 정의될 수 있으며, 이때 해당 함수는 외부 함수(예: 이벤트 핸들러 함수)의 스코프에 접근할 수 있습니다.

예시:

document.addEventListener('click', function() {
  console.log('Click event occurred');
});

위 예시에서 addEventListener 메서드의 두 번째 인자로 전달된 함수는 콜백 함수로, 이벤트 발생 시 실행됩니다.

자바스크립트의 이러한 스코프 관련 특징을 이해하면, 익명 함수와 콜백 함수를 유연하게 다룰 수 있게 됩니다.