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:
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:
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:
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!
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: JavaScript
3 Comentários:
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.
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!
@Jonatan,
Você está certo, aquilo foi apenas um exemplo que quis utilizar, talvez não tenha sido muito feliz no exemplo.
Postar um comentário
Assinar Postar comentários [Atom]
<< Página inicial