¿Por qué esto no produce nada?¿Por qué no puedes escribir una expresión de función?
console.log(JSON.stringify(function(){console.log('foobar');}));
¿Por qué esto no produce nada?¿Por qué no puedes escribir una expresión de función?
console.log(JSON.stringify(function(){console.log('foobar');}));
JSON no puede stringify funciones en absoluto, que las trata igual que undefined
o null
valores. Puede verificar el algoritmo exacto en EcmaScript 5.1 §15.12.3, ver también description at MDN.
Sin embargo, usted puede, por supuesto, stringify expresión de función por colada a una cadena, intente
console.log("" + function(){console.log('foobar');})
Hola Bergi, pasé mi función de casteado a mi trabajador web, sin embargo, ¿cómo puedo volver a convertirme en js? JSON.parse? –
@TedFitzpatrick 'eval'. Por supuesto, solo funciona para funciones sin variables gratuitas. – Bergi
Gracias Bergi. Estoy pasando una expresión de función de constructor que tiene declaraciones de funciones internas. Cuando eval() obtengo un "token inesperado" ("Intenté eliminar el bloque" function() {} "circundante, pero seguí recibiendo el error ... ¿las cadenas evaluadas pueden contener funciones? –
JSON no tiene medios para representar una función. Es un formato de datos diseñado para la simplicidad y la compatibilidad en todos los idiomas (y una función es lo último que será compatible con varios idiomas).
A partir de los documentos de JSON.stringify:
Si no está definida, una función o un valor XML se encuentra durante la conversión o bien es omitida (cuando se encuentra en un objeto) o censurado a nulo (cuando se se encuentra en una matriz).
Usted no puede hacer eso, pero hay algunas bibliotecas de terceros pueden ayudar a hacer que, como: https://www.npmjs.com/package/json-fn
http://stackoverflow.com/questions/3685703/javascript-stringify-object-including- members-of-type-function – dmp