🤔 Para Refletir : "Não julgue um jogo pelo Title!" - FL

Javascript - Eval

Administração Administração
♫ in the jungle, the mighty jungle, the lion sleeps tonight ♫
Postagens
465
Bravecoins
2.092
g5jWZNS.png



O que é Eval?

Eval é um comando que converte um código representado por uma string em uma execução de comando.



Como utilizar Eval?

A sintaxe do comando eval é o seguinte:

Javascript:
eval(string);

Composto pela palavra-chave eval, depois - entre parênteses - um código representado em string. Veja um exemplo:

Javascript:
let olaMundo = "console.log('Hello world!')";

eval(olaMundo);

// Saída: Hello world!

Neste exemplo, é executado no eval um contexto de código que está em formato de string, neste caso, console.log('Hello world!'). Ao executá-lo, o comando em string é convertido, compilado e executado como um comando Javascript.



Quando utilizar Eval?

Existe alguns sistemas feitos em Javascript onde o Eval é necessário para executar uma expressão composta de códigos ou expressões matemáticas. Por exemplo, um sistema simples de calculadora onde os cálculos são armazenados em uma string e, para poder obter o resultado desse cálculo, é feito uma conversão de string para um código em Javascript. Veja como ficaria a execução desse sistema:

Javascript:
function calcular(calculo) {
    return eval(calculo);
}

console.log(calcular("2 + 4"));

// Saída: 6

Apesar de parecer um comando útil para certas ocasiões, não é recomendado utilizá-lo, pois, segundo a documentação disponibilizado em MDN Web Docs:

eval() é uma função perigosa, que executa o código passado com os privilégios do caller. Se você executar o eval() com uma sequência de caracteres que podem ser afetados por uma parte maliciosa, você pode acabar executando código malicioso na máquina do usuário com as permissões da sua página/extensão. Mais importante ainda, o código de terceiros pode ver o escopo em que eval() foi chamado, o que pode levar a possíveis ataques como Function não é suscetível.

eval() é geralmente mais lento do que as alternativas, uma vez que tem de invocar o interpretador JS, enquanto muitos outros construtores são otimizados por engines de JS modernos.

Os interpretadores modernos convertem javascript em código de máquina. Resumindo, o nome das variáveis será desmanchado. Portanto, o uso de eval forçará o navegador a fazer buscas caras para descobrir o endereço e seu valor no código de máquina. Além disso, novos valores podem ser introduzidos em eval como mudanças no tipo da variável, fazendo o navegador recalcular todo o código de máquina gerado anteriormente. Felizmente, existem alternativas mais seguras (e rápidas) ao eval() para usos comuns.

Mais informações:
 
Última edição:
Mais um tópico de tutorial de Javascript reformulado e, com esse tópico, eu finalizo a primeira parte da reformulação de tópicos de tutoriais de Javascript existentes. Pode haver mais tópicos que eu possa estar postando aqui no fórum para abranger mais sobre os comandos em Javascript, por isso, fiquem atentos aos próximos tópicos que estarei elaborando com o tempo.

~ Até mais! 🦁
 
Voltar
Topo