>웹 프론트엔드 >JS 튜토리얼 >'eval' 또는 비표준 기능을 사용하지 않고 JavaScript 함수에 동적으로 이름을 지정할 수 있습니까?

'eval' 또는 비표준 기능을 사용하지 않고 JavaScript 함수에 동적으로 이름을 지정할 수 있습니까?

DDD
DDD원래의
2024-11-17 11:08:01635검색

Can You Dynamically Name JavaScript Functions Without Using `eval` or Non-Standard Features?

JavaScript에서 동적 이름을 사용하여 함수 생성

평가 또는 비표준 JavaScript 기능을 사용하지 않고 함수에 실제 이름을 동적으로 할당할 수 있습니까? 이 질문은 디버깅 컨텍스트에서 식별 가능한 이름을 가진 함수를 찾을 때 발생합니다.

ECMAScript 2015 이상 버전용 솔루션(ES6)

ES2015에서는 솔루션을 도입합니다. 익명 함수 표현식을 객체 속성에 할당하면 함수에 해당 속성의 이름이 제공됩니다. 이를 계산된 속성 이름과 결합하면 함수 생성자나 평가판에 의존하지 않고 함수 이름을 지정할 수 있습니다.

ES2015에서 다음 코드 조각은 동적 이름을 가진 함수를 생성합니다.

const dynamicName = "foo" + Math.floor(Math.random() * 1000);
const obj = {
    [dynamicName]() {
        throw new Error();
    },
};
const f = obj[dynamicName];

함수 이름은 name 속성을 통해 검색하거나 오류 스택 추적에서 관찰할 수 있습니다.

console.log("Function's `name` property: " + f.name + " (see compatibility note)");

try {
    f();
} catch (e) {
    console.log(e.stack);
}

참고 특정 브라우저에서는 스택 추적에 이름이 표시되지 않을 수 있습니다.

위 내용은 'eval' 또는 비표준 기능을 사용하지 않고 JavaScript 함수에 동적으로 이름을 지정할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.