Domanda

Perché questo non produce nulla?

console.log(JSON.stringify(function(){console.log('foobar');}));
.

È stato utile?

Altri suggerimenti

JSON non ha alcun modo per rappresentare una funzione.È un formato di dati progettato per semplicità e compatibilità attraverso le lingue (e una funzione è l'ultima cosa che sarà compatibile con il linguaggio cross-linguistico).

Dai documenti per json.Stringify :

.

Se non definito, una funzione o un valore XML viene riscontrato durante la conversione è omesso (quando viene trovato in un oggetto) o censurato a null (quando viene trovato in un array).

Non puoi farlo, ma ci sono alcune librerie di terze parti possono aiutarti a farlo, come: https://www.npmjs.com/package/json-fn

Se si desidera utilizzare JSON.stringify per convertire anche funzioni e oggetti nativi è possibile passare una funzione di convertitore come secondo argomento:

const data = {
  fn: function(){}
}

function converter(key, val) {
  if (val && typeof val === 'function' || val.constructor === RegExp) {
    return String(val)
  }
  return val
}

console.log(JSON.stringify(data, converter, 2))
.

Ritorna undefined dalla funzione Convertitore se si desidera omettere il risultato.

Il terzo parametro è il numero di spazi che si desidera l'uscita da indentazione (opzionale).

yourFunctionName.toString(); stringerà anche una funzione

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top