Pregunta

¿Por qué esto no produce nada?

console.log(JSON.stringify(function(){console.log('foobar');}));
¿Fue útil?

Otros consejos

JSON no tiene medios para representar una función.Es un formato de datos diseñado para simplicidad y compatibilidad a través de idiomas (y una función es lo último que será compatible con el idioma cruzado).

de los documentos para json.stringify :

Si no está definido, una función, o un valor XML se encuentra durante la conversión, se omite (cuando se encuentra en un objeto) o se censura a NULL (cuando se encuentra en una matriz).

No puede hacer eso, pero hay algunas bibliotecas de terceros, pueden ayudarlo a hacerlo, como: https://www.npmjs.com/package/json-fn

Si quieres usar JSON.stringify para convertir también funciones y objetos nativos, puede pasar una función de conversión como segundo argumento:

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))

Devolver undefined desde la función de conversión si desea omitir el resultado.

El tercer parámetro es cuántos espacios desea sangrar la salida (opcional).

yourFunctionName.toString(); también rinificará una función

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top