평가 없이 동적 함수 생성
질문: 런타임에 결정된 이름으로 함수를 생성하는 것이 가능합니까? eval()을 사용하지 않고 순수한 JavaScript만 사용합니까?
ECMAScript 2015에 대한 답변:
예, ES2015는 솔루션을 도입합니다. 객체 속성에 할당된 익명 함수 표현식은 이제 속성 이름을 함수 이름으로 상속합니다. 이는 계산된 속성 이름과 결합되어 동적 이름을 가진 함수를 생성할 수 있습니다.
예:
const dynamicName = "foo" + Math.floor(Math.random() * 1000); const obj = { [dynamicName]() { throw new Error(); }, }; const f = obj[dynamicName]; console.log("Function's `name` property: " + f.name); // Logs: "foo###" (where ### is 1-3 digits)
ES2015에서 이 방법은 함수에 이름이 있고 해당 함수가 디버거의 스택 추적에 나타납니다. 하지만 Edge와 Safari에서는 스택 추적에 함수 이름이 표시되지 않을 수 있습니다.
위 내용은 `eval()`을 사용하지 않고 JavaScript에서 동적으로 이름이 지정된 함수를 만들 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!