Perché questo non produce nulla?Perché non puoi stringificare una espressione di funzione?
console.log(JSON.stringify(function(){console.log('foobar');}));
Perché questo non produce nulla?Perché non puoi stringificare una espressione di funzione?
console.log(JSON.stringify(function(){console.log('foobar');}));
JSON non può stringa i funzioni a tutti, Gestisce loro proprio come undefined
o null
valori. È possibile controllare l'algoritmo esatto al EcmaScript 5.1 §15.12.3, vedere anche lo description at MDN.
Tuttavia è ovviamente in grado di stringa i espressione di una funzione gettandoli in una stringa, provare
console.log("" + function(){console.log('foobar');})
Ciao Bergi, ho passato la mia funzione casted al mio web worker, tuttavia come faccio a riconvertirlo in js? JSON.parse? –
@TedFitzpatrick 'eval'. Ovviamente funziona solo per funzioni senza variabili libere. – Bergi
Grazie Bergi. Sto passando una espressione di funzione di costruzione che ha istruzioni di funzione interne. Quando eval() ricevo un "token imprevisto" ("Ho provato a rimuovere la funzione" circostante() {} ", ma si ottiene comunque l'errore ... le stringhe eval'd possono contenere funzioni? –
JSON non ha alcun mezzo per rappresentare una funzione. Si tratta di un formato dati progettato per semplicità e compatibilità tra i linguaggi (e una funzione è l'ultima cosa che sarà compatibile con le lingue diverse).
Dalla documentazione per JSON.stringify:
Se indefinito, una funzione o un valore XML si incontra durante la conversione si sia omesso (quando si trova in un oggetto) o censurato per nulla (quando si trova in una matrice).
Non si può fare questo, ma ci sono alcune librerie di terze parti possono aiutare a fare che, come: https://www.npmjs.com/package/json-fn
http://stackoverflow.com/questions/3685703/javascript-stringify-object-including- membro-di-tipo-funzione – dmp