Quiero escribir una función en JavaScript, necesita obtener la forma de cadena (texto en el código fuente) de su parámetro en lugar del valor del parámetro.
Nota: El tipo del parámetro puede ser cualquier cosa, no restringido a una cadena, y el valor del parámetro puede ser cualquier expresión.
Por ejemplo:
function processParam(param) { let literalCode = ""; ... } // I want to get the string "100 * 2" instead of 200 inside this function. processParam(100 * 2); // I want to get the string "console.log('abc')" instead of undefined inside this function. processParam(console.log('abc'));En otras palabras, quiero obtener el código de la línea que se está ejecutando actualmente. ¿Cómo puedo hacer esto?
Eso no es realmente posible así. Pero con un ligero cambio puedes obtener algo de código fuente. Las funciones tienen código fuente. Entonces, si pasa el argumento como una función, puede obtener el código fuente. Y si desea el valor real, debe ejecutarlo.
Aquí hay una demostración:
function processParam(param){ let literalCode = param.toString().split("=>").pop().trim(); console.log(literalCode); let actualValue = param(); // execute it } processParam(() =>100 * 2); processParam(() => console.log('abc'));