Heim >Web-Frontend >js-Tutorial >Können Sie in JavaScript dynamisch benannte Funktionen erstellen, ohne „eval()' zu verwenden?

Können Sie in JavaScript dynamisch benannte Funktionen erstellen, ohne „eval()' zu verwenden?

Linda Hamilton
Linda HamiltonOriginal
2024-11-11 16:51:03393Durchsuche

Can You Create Dynamically Named Functions in JavaScript Without Using `eval()`?

Dynamische Funktionserstellung ohne Auswertung

Frage: Ist es möglich, eine Funktion mit einem zur Laufzeit bestimmten Namen zu erstellen? ohne auf eval() zurückzugreifen und nur reines JavaScript zu verwenden?

Antwort für ECMAScript 2015:

Ja, ES2015 führt eine Lösung ein. Anonyme Funktionsausdrücke, die Objekteigenschaften zugewiesen sind, erben jetzt den Eigenschaftsnamen als Funktionsnamen. Dies kann mit berechneten Eigenschaftsnamen kombiniert werden, was die Erstellung von Funktionen mit dynamischen Namen ermöglicht.

Beispiel:

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)

In ES2015 stellt diese Methode sicher, dass die Funktion einen Namen hat und dass dieser erscheint in Stacktraces in Debuggern. Beachten Sie jedoch, dass Edge und Safari den Funktionsnamen möglicherweise nicht in Stacktraces anzeigen.

Das obige ist der detaillierte Inhalt vonKönnen Sie in JavaScript dynamisch benannte Funktionen erstellen, ohne „eval()' zu verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn