Please note, this is a STATIC archive of website developer.mozilla.org from November 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

Este articulo necesita una revisión editorial. Cómo puedes ayudar.

Resumen

Evalúa una cadena de código JavaScript sin referenciar a un objeto en particular.

Sintaxis

eval(cadena [,objeto ])

Parámetros

cadena
Una cadena que representa una expresión, sentencia o secuencia de sentencias en JavaScript. La expresión puede incluir variables y propiedades de objetos existentes.
objeto
Un argumento opcional; si se especifica, la evaluación se restringe al contexto del objeto especificado.

Descripción

eval es una función de alto nivel y no está asociada a ningún objeto.

El argumento de la función eval es una cadena. Si la cadena representa una expresión, eval evalúa la expresión. Si el argumento representa una o más sentencias JavaScript, eval ejecuta las sentencias. No llame a eval para evaluar una expresión aritmética; JavaScript evalúa las expresiones aritméticas automáticamente.

Si construye una expresión aritmética como una cadena, puede usar eval para evaluarla más tarde. Por ejemplo, suponga que tiene la variable x. Puede posponer la evaluación de una expresión que implique a x mediante la asignación a la cadena del valor de la expresión, diciendo "3 * x + 2", a la variable, y llamando entonces a eval posteriormente en el script.

Si el argumento de eval no es una cadena, eval devuelve el argumento sin cambios. En el siguiente ejemplo, se especifica el constructor String, y eval devuelve un objeto String en vez de evaluar la cadena.

eval(new String("2 + 2")); // devuelve un objeto String que contiene "2 + 2"
eval("2 + 2");             // devuelve 4

Puede trabajar sobre esta limitación de una manera genérica usando toString.

var expresion = new String("2 + 2");
eval(expresion.toString());

No puede usar la función eval indirectamente mediante la invocación de un nombre diferente a eval; si lo hace podría ocurrir un error en tiempo de ejecución. Por ejemplo, no debería usar el siguiente código:

var x = 2;
var y = 4;
var miEval = eval;
miEval("x + y");

No debería utilizar eval para convertir los nombres de propiedades en propiedades. Por ejemplo, considere el siguiente ejemplo. La función getNombreCampo(n) devuelve el nombre del elemento del formulario especificado como una cadena. La primera sentencia asigna el valor de cadena del tercer elemento del formulario a la variable campo. La segunda sentencia utiliza eval para mostrar el valor del elemento del formulario.

var campo = getNombreCampo(3);
document.write("El campo llamado ", campo, " tiene un valor de ", eval(campo + ".value"));

Sin embargo, aquí eval no es necesario. De hecho, su uso está desaconsejado. En cambio, use los operadores de miembro, que son mucho más rápidos:

var campo = getFieldName(3);
document.write("El campo llamado ", campo, " tiene un valor de ", campo[valor]);

Compatibilidad Hacia Atrás

JavaScript 1.3 y anteriores

Puede usar eval indirectamente, aunque ésto está desaconsejado.

JavaScript 1.1

eval también es un método de todos los objetos.

Ejemplos

Los siguientes ejemplos muestran el resultado usando document.write. En JavaScript del lado servidor, puede mostrar el mismo resultado llamando a la función write en vez de document.write.

Ejemplo: Usando eval

En el siguiente código, las dos sentencias que contienen eval devuelven 42. La primera evalúa la cadena "x + y + 1"; la segunda evalúa la cadena "42".

var x = 2;
var y = 39;
var z = "42";
eval("x + y + 1"); // returns 42
eval(z);           // returns 42 

Ejemplo: Usando eval para evaluar una cadena de sentencias de JavaScript

El siguiente ejemplo utiliza eval para evaluar una cadena str. Esta cadena consiste en sentencias de JavaScript que abren un diálogo Alert y asignan a z un valor de 42 si x es cinco, y asigna 0 a z en caso contrario. Cuando se ejecuta la segunda sentencia, eval provoca que estas sentencias se realicen, y también evalúa el conjunto de sentencias y devuelve el valor asignado a z.

var str = "if (x == 5) {alert('z is 42'); z = 42;} else z = 0; ";
document.write("<P>z es ", eval(str));

Valor Devuelto

eval devuelve el valor de la última expresión evaluada.

var str = "if ( a ) { 1+1; } else { 1+2; }"
var a = true;
var b = eval(str);  // returns 2 
alert("b is : " + b);
a = false;
b = eval(str);  // returns 3
alert("b is : " + b);

Vea También

Etiquetas y colaboradores del documento

Etiquetas: 
 Colaboradores en esta página: kukokym, ericmartinezr, SphinxKnight, teoli, Mgjbot, Talisker, Sheppy
 Última actualización por: kukokym,