12.9.11

Función eval() en Javascript

El uso de eval() en Javascript es similar a la funcion eval() en PHP con algunas diferencias mínimas.
A mi personalmente me ha costado encontrarle la vuelta para que funcione correctamente, por lo que dejo acá ejemplos de como se debe usar y como evitar errores típicos.


A quién no conoce la función de eval() paso a explicar:

"eval() nos permite pasar como parametro una cadena plana de caracteres que será tratada como código Javascript."

La necesidad de usar esta función puede darse cuando debemos, por ejemplo, declarar una variable pero no sabemos de antemano qué nombre va a tener. Esto puede darse al crear las variables a partir de los elementos de un array con valores que no son fijos (aunque en el ejemplo siguiente si lo son).

Ejemplo:
var nombres = Array('negro','azul','juan','miVariable'); // en este array guardamos los nombres que van a tener las variables.
eval('var '+ nombres[0] +' = "default" ');  // var negro = "default"eval('var '+ nombres[1] +' = "default" ');  // var azul = "default"
eval('var '+ nombres[2] +' = 0 ');            // var juan = 0
eval('var '+ nombres[3] +' = 0 ');            // var miVariable = 0
Eval nos permite usar variables declaradas previamente intercaladas con texto plano, logrando como resultado una cadena que será interpretada como código Javascript puro.

Aclarado esto paso a dar ejemplos de como usar correctamente la función y como evitar errores:

Ejemplo 1:
Al asignar el nombre a la variable que estamos creando (si el nombre de variable se genera dinamicamente como en el ejemplo) debemos salir de las comillas que encierran el texto plano e insertar, ahí si, código Javascript para luego abrir comillas nuevamente y seguir con texto plano.
eval( 'var ' + nombres[0] + ' = "Hola mundo!" ' ); // está bien
eval( 'var nombres[0] = "Hola mundo!" ' );          // está mal


Ejemplo 2:
Esto cambia cuando queremos incluir una variable (previamente definida) del lado posterior al signo "=", osea al darle un "valor" a la variable que estamos creando, aquí la regla es totalmente inversa: Esta variable previamente definida debe incluirse entre las comillas que encierran texto plano.
Visto en el ejemplo resulta mas claro:
eval( 'var ' + nombres[0] + ' =  valores[0] ;' ); // está bien
eval( 'var ' + nombres[0] + ' = '+ valores[0] + ';' ); // está mal

A medida que me vayan surgiendo ejemplos que me parezcan prácticos para entender al 100% el uso correcto de esta funcion los iré agregando.

A su vez explicaré cómo se puede evitar el uso de eval() pero obteniendo el mismo resultado.

2 comentarios :

  1. Buen aporte voy a probarlo para evitar estar escribiendo las 20 variables que necesito pasar de un formulario a otro archivo php

    ResponderBorrar
    Respuestas
    1. Me alegro que te haya servido el post.
      Te hago una pregunta, el formulario php lo creaste especialmente para pasar las variables de una pagina a otra?

      Borrar

Sentite libre de comentar, criticar y/o aportar tu granito en este (proyecto de..) mar de conocimiento ;)