Warum kann man einen Funktionsausdruck nicht in Strings umwandeln?
-
11-12-2019 - |
Frage
Warum bringt das nichts?
console.log(JSON.stringify(function(){console.log('foobar');}));
Lösung
JSON kann Funktionen überhaupt nicht in Strings umwandeln, sondern behandelt sie genauso undefined
oder null
Werte.Den genauen Algorithmus können Sie unter überprüfen EcmaScript 5.1 §15.12.3, siehe auch die Beschreibung bei MDN.
Sie können Funktionsausdrücke jedoch natürlich in Strings umwandeln, indem Sie sie in einen String umwandeln. Versuchen Sie es
console.log("" + function(){console.log('foobar');})
Andere Tipps
JSON hat keine Mittel, um eine Funktion darzustellen.Es ist ein Datenformat, das für die Einfachheit und Kompatibilität in der gesamten Sprache ausgelegt ist (und eine Funktion ist das Letzte, was zuletzt ist, der kreuzsprache kompatibel ist).
aus den docs für json.stringify :
wenn undefiniert, eine Funktion oder ein XML-Wert wird während der Umwandlung entweder weggelassen (wenn es in einem Objekt gefunden wird) oder zensiert auf Null (wenn es in einem Array gefunden wird).
Sie können das nicht tun, aber es gibt einige Bibliotheken von Drittanbietern, die Ihnen helfen können. Wie: https://www.npmjs.com/package/json-fn
Wenn Sie den generakodicetagcode verwenden möchten, um auch Funktionen und native Objekte zu konvertieren, können Sie eine Konverter-Funktion als zweites Argument weitergeben: generasacodicetagpre.
GRENZERACDICETAGCODECODE RÜCKEN DER CONVERTER-Funktion, wenn Sie das Ergebnis weglassen möchten.
Der dritte Parameter ist, wie viele Räume Sie möchten, dass die Ausgabe von der Ausgabe (optional) sucht.
yourFunctionName.toString();
erscheint auch eine Funktion