Tecnologia

eval

A função eval converte uma string em código JavaScript e o executa, se for um comando válido.

Ela é uma poderosa ferramenta para códigos bem dinâmicos.

Vamos tentar explicar seu funcionamento com alguns exemplos.


Soma de valores:


Supondo que eu tenha um formulário que me forneça 2 números, e que ao clicar no botão "Somar" o javascript tem que somar esses 2 números e exibir um alerta com o resultado. O código ficaria assim:


var valor1 = document.getElementById("valor1").value; // 1
var valor2 = document.getElementById("valor2").value; // 2

console.log(valor1 + valor2); // 12

Ao executar o código acima (com os valores 1 e 2, por exemplo), verá que o resultado exibido no console foi "12" e não "3".

Isso ocorre pois o interpretador do javascript entende que são strings (textos), e a soma que ele faz é, na verdade, uma concatenação das strings.

Agora se utilizarmos a função eval para interpretar os valores tudo funcionará corretamente:


var valor1 = document.getElementById("valor1").value; // 1
var valor2 = document.getElementById("valor2").value; // 2

console.log(eval(valor1) + eval(valor2)); // 3

Select dinâmico:


Supondo que exista um formulário com um select dos estados brasileiros e que ao selecionar um estado, uma função é chamada para carregar as cidades do estado selecionado.

Ao executar o código abaixo, selecionando a cidade do Rio de Janeiro, por exemplo, ocorrerá um erro, pois a variável 'cidades' terá o valor string estado_RJ ao invés de conter o array com as cidades do estado selecionado.


var estado_RJ = new Array("Botafogo", "Copacabana", "Flamengo");

function muda_estado(){

	var estado = document.form_cidades.estado[document.form_cidades.estado.selectedIndex].value;  // RJ
	
	var cidades = "estado_" + estado;	// estado_RJ
	 
	document.form_cidades.cidade.length = cidades.length;

	for(i = 0; i < cidades.length; i++)
		document.form_cidades.cidade.options[i].text = cidades[i];              
}

Para corrigir o código acima, basta utilizar a função eval que ela interpretará o código e verá que se trata de uma variável definida e atribuirá seu valor a variável 'cidades'.

	
var estado_RJ = new Array("Botafogo", "Copacabana", "Flamengo");

function muda_estado(){

	var estado = document.form_cidades.estado[document.form_cidades.estado.selectedIndex].value;  // RJ
	
	var cidades = eval("estado_" + estado);	// "Botafogo", "Copacabana", "Flamengo"
	 
	document.form_cidades.cidade.length = cidades.length;

	for(i = 0; i < cidades.length; i++)
		document.form_cidades.cidade.options[i].text = cidades[i];              
}
2020 © B85 Tecnologia
eu@andersonbravo.com.br