Nome:
Local: Rio de Janeiro, RJ, Brazil

Que perguntinha hein?! Mas vamos lá, adoro estudar assuntos relacionados à web, sempre que posso aprendo uma tecnologia, técnica ou linguagem nova. Tento sempre ver quais são as tendências e acompanha-las, enfim eu sou um eterno aprendiz. Deixando o lado profissional, entrando no lado pessoal, sou uma pessoa super gente-boa (pelo menos eu me acho. rs), adoro curtir a night, sair com os amigos, fazer novas amizades e viajar (tem coisa melhor do que isso?) Acho que você já está sabendo demais sobre mim. Fuiii...

terça-feira, 19 de junho de 2007

Função eval()

Função extremamente interessante do Javascript e no entanto não vejo ela sendo muito explicada por aí e ela é uma daquelas funções que você sempre precisou, mas vc não sabia disso.

Definição:
Converte uma string em código JavaScript e executa-o, claro se for um comando válido.


Código:
eval('comando_string')

Conheci-a há pouco tempo, porém estou apaixonado, ela é uma poderosa ferramenta para códigos bem dinâmicos e códigos que possuam poucos kbs. Vamos à um exemplo de aplicação bem simples e com isso já dá para notar como é legal:

Tenho um menu com vários itens (Home, Contatos, Portifólio, Fotos, Blog, Quem Somos e por ai vai) esses links são carregado por AJAX e em cada um desses links existe um botão voltar existe uma rotina da chamada de página correspondente (vamos supor também que não conheço a solução do problema de histórico do Bernardo Rufino, nem a do JulioGreff) e para efetuar essa volta, tive a "brilhante" idéia de quando um item do menu é clicado, armazeno o valor desse item à uma variável, e esta por sua vez só vai armazenar o valor de um item (histórico de um), então quando pressiono o voltar ele testa o valor dessa variável e chama a função correspondente ao item, ou seja, a variável recebe o valor do penúltimo item clicado e carrega a página (penúltimo item, porque o último é o link em que estamos :)), E assim ficou meu código:

document.getElementById("meubotaovoltar").onclick = function () {
if (historicode1 == "home") { //historicode1 é minha variável que recebe o valor do último item clicado
location.href="home.htm"; //faz a chamada da página
} else if (historicode1 == "contatos") {
location.href="contatos.htm"
}
// E assim sucessivamente...
}


Aí em cima nenhum mistério, fiz um teste para cada um dos valores depois faço um location para a página correspondente.

Já com o uso do eval() todas essas linhas são substituídas por apenas uma (pode acreditar). Como disse anteriormente a função eval() Converte uma string em código JavaScript e executa. Como se pode notar o valor que a variável armazena é similar ao valor da página em que vai ser redirecionada, a única alteração é o sufixo (viu como as aulas de português são importantes, sei até falar bonito) ".htm". Let's Go:


document.getElementById("meubotaovoltar").onclick = function () {
eval("location.href="+historicode1+".htm");
}


Entendeu?! Independente do valor da variável historicode1 o Javascript irá chamar a página certa (claro, se a página existir e se atribuiu o valor correto da variável).

Agora é fácil perceber o potencial dessa instrução, sempre onde tiver uma lista de coisas similares à fazer, essa instrução te ajuda muito, pois normalmente quando se tem uma lista dessa você atribui o valor das funções, ou seja lá o que esteja atribuindo, de forma semelhante, diferenciando apenas um pedaço do nome e esse por sua vez pode ser passado por parâmetro, não tendo mais a necessidade de você testar cada valor.

Fuiii...

Dúvidas, Críticas, Sugestões... Estou aqui para isso!

Marcadores:

3 Comentários:

Anonymous william disse...

Fala Ramon tudo bem?
Cara gostei muito da sua explicação sobre a função eval, estou começando a aprender programação js agora e me deparei com a função eval em um dos exemplos da apostilas que estou estudando, abri o google e fui procurar a explicação da função eval pq na apostila que estou estudando eu não encontrei e a sua resposta foi a melhor que encontrei.
Qdo estamos aprendendo algo novo, costumamos ser bem curiosos e eu na minha curiosidade entendi que a função eval pode ser um pouco arriscada porque no campo em que ela pega a string, o usuário pode colocar uma rotina js, assim a função eval vai executar a rotina.

26 de novembro de 2009 15:47  
Blogger Jonatan Selau disse...

Tipo, eu fiz assim e funcionou também...

var x = "google";
{
window.location.href = "http://www." + x + ".com.br";
}

É claro que fiz um exemplo diferente... Mas não funcionaria pra ti também?
Desculpa a ignorância, sou iniciante rsrsrs!
Abraço!

22 de março de 2011 01:08  
Blogger Ramon disse...

@Jonatan,
Você está certo, aquilo foi apenas um exemplo que quis utilizar, talvez não tenha sido muito feliz no exemplo.

22 de março de 2011 07:37  

Postar um comentário

Assinar Postar comentários [Atom]

<< Página inicial