Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript에서 호출자(Caller) 함수를 찾는 방법

JavaScript에서 호출자 함수 찾기

JavaScript에서 특정 함수를 누가 호출했는지, 즉 호출자(caller) 함수를 확인하려면 비표준(non-standard) 기능인 function.caller 속성을 사용해야 합니다.

참고로 과거에는 arguments.caller 속성도 같은 목적으로 사용되었지만, 이 속성은 이미 폐기(deprecated)되어 현대 JavaScript 환경에서는 더 이상 동작하지 않습니다.

function.caller란?

function.caller는 해당 함수가 실행 중일 때 이 함수를 호출한 함수에 대한 참조를 반환합니다. 만약 최상위 레벨(글로벌 스코프)에서 호출되었다면 null을 반환합니다.

예제 코드

다음 예제처럼 버튼 클릭 시 Display() 함수가 실행되면서 자신을 호출한 함수 정보를 알림창으로 표시할 수 있습니다.

라이브 데모

<html>
   <head>
      <script type="text/javascript">
         function Display() {
            alert("caller is " + Display.caller);
         }
      </script>
   </head>
   <body>
      <p>아래 버튼을 클릭해 보세요:</p>
      <form>
         <input type = "button" onclick = "Display()" value="호출자 함수 확인하기">
      </form>
   </body>
</html>

사용 시 주의 사항

function.caller는 표준 기능이 아니며 다음과 같은 제약이 있습니다.

  • strict mode에서 사용 불가: 엄격 모드('use strict')에서 caller 속성에 접근하면 TypeError가 발생합니다.
  • 브라우저 호환성 문제: 모든 환경에서 일관되게 동작한다는 보장이 없습니다.

따라서 실무에서는 디버깅 목적으로 Error().stack을 활용해 호출 스택(call stack)을 확인하는 것이 더 안전하고 권장되는 방법입니다.