„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Können Sie zur Laufzeit benannte Funktionen in JavaScript ohne „eval“ erstellen?

Können Sie zur Laufzeit benannte Funktionen in JavaScript ohne „eval“ erstellen?

Veröffentlicht am 15.11.2024
Durchsuche:175

Can You Create Runtime-Named Functions in JavaScript Without `eval`?

Laufzeitbenannte Funktionen ohne Auswertung in JavaScript

Ist es möglich, eine JavaScript-Funktion mit einem zur Laufzeit bestimmten Namen zu erstellen, ohne Auswertung oder unkonventionelle Engine-spezifische Funktionen zu verwenden ? Ja, dies ist jetzt mit ECMAScript 2015 (ES6) und höher möglich.

ES6-Lösung: Berechnete Eigenschaftsnamen

In ES6 nimmt ein anonymer Funktionsausdruck, der einer Objekteigenschaft zugewiesen ist, den Namen dieser Eigenschaft an Eigentum. Dies kann mit berechneten Eigenschaftsnamen kombiniert werden, um eine Funktion ohne neue Funktion oder Auswertung zu benennen. Zum Beispiel:

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

Dies erstellt eine Funktion mit dem Namen „foo###“, wobei ### eine zufällige 1-3-stellige Zahl ist.

Sichtbarkeit des Funktionsnamens

Die Namenseigenschaft der Funktion spiegelt den dynamischen Namen wider. Der Kompatibilitätshinweis im obigen Codeausschnitt verweist darauf, dass Edge und Safari den Namen derzeit nicht in Stacktraces anzeigen.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3