Dlaczego to nic nie produkuje?Dlaczego nie można powiązać wyrażenia funkcji?
console.log(JSON.stringify(function(){console.log('foobar');}));
Dlaczego to nic nie produkuje?Dlaczego nie można powiązać wyrażenia funkcji?
console.log(JSON.stringify(function(){console.log('foobar');}));
JSON nie może stringify funkcje w ogóle, to zajmuje im tak jak undefined
lub null
wartości. Dokładny algorytm można sprawdzić pod numerem EcmaScript 5.1 §15.12.3, patrz także description at MDN.
jakkolwiek oczywiście mogą stringify wyrażenie funkcyjne, oddając je na sznurku, spróbuj
console.log("" + function(){console.log('foobar');})
Witam Bergi, przekazałem funkcję odlewania do mojego pracownika sieci, jednak jak mogę przywrócić z powrotem do js? JSON.parse? –
@TedFitzpatrick 'eval'. Oczywiście działa tylko dla funkcji bez zmiennych wolnych. – Bergi
Dzięki Bergi. Przekazuję wyrażenie funkcji konstruktora, które samo ma wewnętrzne instrukcje funkcyjne. Kiedy I eval() otrzymuję "nieoczekiwany token" (". Próbowałem usunąć otaczający blok" function() {} ", ale nadal otrzymuję błąd ... czy ciągi eval'd zawierają funkcje? –
JSON nie ma możliwości, aby reprezentować funkcję. Jest to format danych zaprojektowany pod kątem prostoty i kompatybilności w różnych językach (a funkcja jest ostatnią rzeczą, która będzie kompatybilna z wieloma językami).
Od docs dla JSON.stringify:
Jeśli niezdefiniowana, funkcja lub wartość XML napotkano podczas konwersji jest albo pominięty (gdy znajduje się w obiekcie) lub ocenzurowana null (jeśli go znajduje się w tablicy).
nie można zrobić, ale istnieją pewne biblioteki osób trzecich mogą pomóc zrobić, że tak: https://www.npmjs.com/package/json-fn
http://stackoverflow.com/questions/3685703/javascript-stringify-object-including- funkcja-typu-członka – dmp