아티클 목록

JS 실행중인 함수 이름 얻기

JS Error를 이용하여 함수 내 호출된 위치 정보 기록하기

업무 도중 에러 발생 시 에러가 발생한 함수의 위치(이름)를 문자열로 얻어야 하는 일이 생겼다.

찾아보니 arguments.callee를 사용하면 호출된 함수명을 얻을 수 있다는데 ES5 strict mode인 경우 이를 지원하지 않았다.

다른 우회 방법이 있는지 찾아보니 강제로 에러를 발생시킨 후 에러 스택 트레이스로부터 필요한 라인을 추출하는 방법이 있다는걸 알게돼 이를 참고해서 사용했다.

export function getFunctionCallerName() {
    // gets the text between whitespace for second part of stacktrace
    return new Error().stack.match(/at (\S+)/g)[1].slice(3);
}

그 외로 찾은 클래스명, 함수명을 얻는 방법들

  • 클래스명과 함수명은 name 속성으로 얻을 수 있었다.
const className = 객체명.constructor.name;
const functionName = 함수명.name;

참고

댓글