DEV Community

Cover image for JavaScript: Para que serve o comando eval?
Cristian Magalhães
Cristian Magalhães

Posted on • Edited on

1

JavaScript: Para que serve o comando eval?

Voltando a falar novamente sobre alguns comandos do JavaScript, dessa vez eu gostaria de falar um pouco sobre o comando eval. Explicar o que ele faz, os perigos de se usar e dar exemplos de uso.

O que ele faz?

Bom basicamente essa função recebe uma string e a interpreta como código Javascript e executa esse código.

Exemplo

Vamos começar com algo bem simples se formos no nosso console do navegador e escrevermos o código alert('oi') o comando vai ser interpretado e vai aparecer uma caixa de alerta no navegador. Porém se eu executar o mesmo código em volta de uma string "alert('oi')" ele não será interpretado pelo navegador e apenas vai se repetir na linha abaixo. Agora se eu rodar o seguinte comando eval("alert('oi')") a caixa de alerta do navegador volta a aparecer, porque o comando eval pega a string passada a ele como parâmetro e executa como um código JavaScript normal.

Casos de uso

Abaixo fiz um código bem simples de um momento que seja relevante usar o eval. Vê que para cada figura nós temos um equação diferente para calcular a área. Então posso criar uma função para fazer isso ou ter a equação no banco, mas nesse caso por algum motivo nós vamos querer ter as equações no banco.
Então basicamente o código pega a string com a equação, substitui os seus parâmetros executa e mostra o resultado.

Image description

Pontos de atenção

Apesar de ser um comando poderoso, o eval também é muito perigoso. Pois como eu disse anteriormente ele interpreta código JS, o que acaba sendo um perigo quando não usado com cautela, fazendo com que você sofra um code injection por exemplo. Abaixo alguns pontos para você pensar quando for usar o eval.

  • O mal uso do eval pode levar code injection
  • Fica mais dificil de debugar código, pois dentro do eval os erros não tem indicação de linha
  • Dificulta a minificação do código

Function uma alternativa para o eval

Diferente do eval o construtor Function cria um novo objeto Function assim criando funções dinamicamente, diferente do eval que executa de cara o seu código JS. E outra particularidade muito importante as funções criadas usando o Function executam somente no escolo global. Como o objetivo do artigo não é falar sobre esse construtor recomendo caso tenha curiosidade ler um pouco mais sobre ele nas docs da mozzila sobre o Function

Muito obrigado por ler 🙃

Links úteis

Sentry blog image

How to reduce TTFB

In the past few years in the web dev world, we’ve seen a significant push towards rendering our websites on the server. Doing so is better for SEO and performs better on low-powered devices, but one thing we had to sacrifice is TTFB.

In this article, we’ll see how we can identify what makes our TTFB high so we can fix it.

Read more

Top comments (1)

Collapse
 
evertontcianduniproof profile image
Everton Tci Uniproof

evoluindo sempre o próximo podemos marca para fazer juntos top o post ficou bacana e bem explicado , parabéns vc está cada vez mais uma referencia .

AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More

AWS GenAI LIVE!

GenAI LIVE! is a dynamic live-streamed show exploring how AWS and our partners are helping organizations unlock real value with generative AI.

Tune in to the full event

DEV is partnering to bring live events to the community. Join us or dismiss this billboard if you're not interested. ❤️