---
title: "JS 실행중인 함수 이름 얻기"
date: "2022-05-01"
tags: ["TIL","JS"]
status: archived
verified: false
---

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

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

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

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

```js
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` 속성으로 얻을 수 있었다.

```js
const className = 객체명.constructor.name;
const functionName = 함수명.name;
```

### 참고

-   [stackoverflow - Can I get the name of the currently running function in JavaScript](https://stackoverflow.com/a/41621478)
-   [mdn - Object.prototype.constructor](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor)
-   [mdn - Function.name](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Function/name)
