Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

208
Vistas
Cómo evaluar variables en una función antes de convertir a cadena en JavaScript

Quiero evaluar todas las variables dentro de una función antes de convertir la función en una cadena.

Ejemplo:

 const x = "5"; function someFunc(){ console.log(x); } someFunc.toString()

Producción:

 function someFunc(){ console.log(x); }

Rendimiento esperado:

 function someFunc(){ console.log("5"); }

Necesito que funcione dinámicamente para cualquier número de variables y cualquier función sin conocer primero la función o las variables. Prefiero una solución basada en metaprogramación como la reflexión, pero cualquier solución que funcione es buena, incluida Regex.

¿Alguna idea sobre cómo implementar eso?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

No creo que esto sea posible, al menos no exactamente como lo describe.

El bloqueador clave es que no hay forma de obtener una lista de todas las variables actualmente visibles o sus valores.

Entonces, en el mejor de los casos, tendría que cambiar un poco el escenario: comience leyendo un archivo (u otra cadena) que contenga el código fuente que desea procesar. A continuación, utilice un analizador de JavaScript (p. ej., Esprima; sin respaldo, solo ilustración) para obtener un AST (árbol de sintaxis abstracta). Luego, puede hacer las transformaciones que desee en ese AST (como: reemplazar variables constantes con su valor) y luego convertir el AST nuevamente en una cadena (que luego puede escribir en un archivo, si lo desea).

Lo anterior debería funcionar para casos simples como el ejemplo que diste. Sin embargo, cuando mira escenarios más complicados, se encontrará con obstáculos y limitaciones. Por ejemplo:

 const x = 5; function Case1() { let y = x; if (someCondition()) y++; console.log(y); // what now? } function Case2() { for (let i = 0; i < x; i++) { console.log(i); // what now? } } function Case3() { const y = {foo: 42, valueOf() { return "null"; }}; console.log(y); // what now? } function Case4() { const y = Math.random() > 0.5 ? "yes" : "no"; console.log(y); // what now? }

Estoy seguro de que hay muchas más situaciones en las que esta idea es difícil de poner en práctica.

No dijiste cuál es tu objetivo final, y esto huele a una pregunta xy . ¿Está buscando oportunidades de optimización? ¿Un entorno de depuración? Sospecho firmemente que hay una manera más fácil de lograr cualquiera que sea su objetivo real.

(Además, esto no tiene nada que ver con V8, libuv o Node.js; colocaré etiquetas en consecuencia).

about 4 years ago · Juan Pablo Isaza Denunciar

0

const x = 5; function someFunc(){ // do something with x return x; } someFunc().toString();

O

 const x = 5; function someFunc(){ // do something with x return x.toString(); } someFunc();
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda