Warum produziert das nichts?Warum können Sie einen Funktionsausdruck nicht mit einem String versehen?
console.log(JSON.stringify(function(){console.log('foobar');}));
Warum produziert das nichts?Warum können Sie einen Funktionsausdruck nicht mit einem String versehen?
console.log(JSON.stringify(function(){console.log('foobar');}));
JSON nicht funktioniert überhaupt stringify können, behandelt er sie wie undefined
oder null
Werte. Sie können den genauen Algorithmus unter EcmaScript 5.1 §15.12.3 überprüfen, siehe auch die description at MDN.
aber Sie können natürlich Funktion Ausdruck stringify von ihnen in einen String Casting
console.log("" + function(){console.log('foobar');})
Hi Bergi, ich habe meine Casted-Funktion an meinen Web-Arbeiter weitergegeben, aber wie kann ich wieder zu js zurückkehren? JSON.parse? –
@TedFitzpatrick 'eval'. Natürlich funktioniert es nur für Funktionen ohne freie Variablen. – Bergi
Danke Bergi. Ich übergebe einen Konstruktorfunktionsausdruck, der selbst interne Funktionsanweisungen hat. Wenn ich eval() bekomme ich "unerwartete Token (". Ich habe versucht, die umliegenden "function() {}" -Block entfernen, aber immer noch den Fehler ... kann ausgewertet Strings Funktionen enthalten? –
JSON versuchen hat keine Möglichkeit, eine Funktion darzustellen. Es ist ein Datenformat, das auf Einfachheit und sprachübergreifende Kompatibilität ausgelegt ist (und eine Funktion ist das letzte, das sprachübergreifend kompatibel ist).
Aus der Dokumentation für JSON.stringify:
Wenn nicht definiert, eine Funktion oder ein XML-Wert wird während der Konvertierung angetroffen wird entweder weggelassen oder zensierte auf null (wenn es (wenn es in einem Objekt gefunden wird) ist in einem Array gefunden).
Sie können das nicht tun, aber es gibt einige Drittanbieter-Bibliotheken können Ihnen helfen, dies zu erreichen, wie: https://www.npmjs.com/package/json-fn
http://stackoverflow.com/questions/3685703/javascript-stringify-object-including- Members-of-Type-Funktion – dmp