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
    
	alert(valor1 + valor2); // 12
Ao executar o código acima (com os valores 1 e 2, por exemplo), verá que o que foi alertado na tela 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
    
	alert(eval(valor1) + eval(valor2)); // 3
Select dinâmico:

Agora vamos criar um select dinâmico. Supondo que tenha 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.

	
	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];              
    }
Ao executar o código acima, 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.

Para corrigir 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];              
    }





Comentários

Copyright © 2018 Anderson Bravo
www.andersonbravo.com.br
anderson@andersonbravo.com.br