Eval () – JavaScript mdn comprar Bitcoin com Amex

A fonte deste exemplo interativo é armazenada em um repositório GitHub. Se você quiser contribuir com o projeto interativo de amostra, clone https://github.com/mdn/interactive-examples e envie-nos uma solicitação de extração. Sintaxe eval (string) Parâmetros string Uma string que representa uma expressão, instrução ou sequência de instruções JavaScript. A expressão pode conter variáveis ​​e propriedades de objetos existentes. valor de retorno

O argumento para a função eval () é uma string. Se a string é uma expressão, eval () avalia a expressão. Se o argumento representar uma ou mais instruções JavaScript, eval () avaliará as instruções. Não chame eval () para avaliar uma expressão aritmética. JavaScript avalia automaticamente expressões aritméticas.


Se você criar uma expressão de string aritmética, poderá usar eval () posteriormente para avaliá-la. Suponha que você tenha uma variável x. Você pode mover a avaliação de uma expressão que contém x, por exemplo, atribuindo o valor de string da expressão " 3 * x + 2", para uma variável e, em seguida, chame eval () posteriormente em seu script.

Se o argumento eval () não for uma string, eval () retornará o argumento inalterado. O exemplo a seguir especifica o construtor de string e eval () retorna um objeto String em vez de avaliar a string. eval (nova string (‘2 + 2’)); // retorna um objeto String que contém "2 + 2"

Se você indiretamente usar a função eval chamando-a através de uma referência não-Eval, o ECMAScript 5 funciona na área global, não local. Isso significa, por exemplo, que as declarações de função criam funções globais e que o código avaliado não tem acesso a variáveis ​​locais na área em que é chamado. Teste de função () {

eval () é uma função perigosa que executa código com privilégios de chamador. Se você eval () executa com uma cadeia de caracteres que podem ser afetados por um atacante, você pode ser executado em um código malicioso do computador do usuário com os privilégios do seu web site / alargamento. Mais importante ainda, que um código de terceiros pode ver o escopo que foi chamado o eval (), que pode levar a possíveis ataques, de modo que uma função semelhante não é provável.

Além disso, intérpretes Javascript modernos convertem Javascript linguagem de máquina. Isso significa que todo conceito de variáveis ​​de nomenclatura é eliminado. Portanto, qualquer uso de eval forçará o navegador a procurar nomes de variáveis ​​longos e caros para descobrir onde a variável está linguagem de máquina e defina seu valor. Além disso, coisas novas nesta variável podem ser introduzidas via eval (), como alterar o tipo dessa variável, forçando o navegador a reavaliar todos os elementos gerados. linguagem de máquina compensar. No entanto, há (felizmente) uma alternativa muito boa para eval: basta usar window.Function. Para um exemplo de como usar o evil () para converter código usando Function (), veja abaixo.

Ao comparar os dois fragmentos de código acima dos dois trechos de código da mesma forma parece funcionar, mas pense novamente depois: a avaliação é muito mais lento. Nota c: new Date () no objeto avaliado. No eval função sem o objeto é avaliada no âmbito global, para que o navegador pode assumir essa data refere-se a window.Date vez de uma variável local chamado Data. Mas no código que usa eval (), o navegador não pode assumir quando o código se parece com isso: Data função (s) {

Em um caso relacionado, e se você quiser realmente que sua função Date seja chamada a partir do código em Function (). Você deveria simplesmente esvaziar e voltar para eval ()? Absolutamente não, nunca. Tente a seguinte abordagem em vez disso. Função Data (s) {

Finalmente, vamos dar uma olhada na minificação. Ao usar a função (), como mostrado acima, você pode reduzir o valor passado para string runCodeWithDateFunction de código de forma muito mais eficiente uma vez que os nomes dos argumentos da função pode também como abaixo sob o código minimizado são minimizados. console.log (função (‘"Use estritamente"; return (função (a) {return a (5)}) ‘) () (função (a) {

Você não deve usar eval () para converter nomes de propriedades em propriedades. Considere o seguinte exemplo, no qual a propriedade do objeto a ser acessado não é conhecida até que o código seja executado. Isso pode ser feito com eval: var obj = {a: 20, b: 30};

JavaScript tem funções da primeira classe, ou seja, você pode passar funções como argumentos para outras APIs, armazená-las em variáveis ​​e propriedades de objetos, e assim por diante. Muitas APIs DOM são projetadas para fazer isso, você pode (e deve) escrever: // em vez de setTimeout (" … ", 1000):

Se a string que você está chamando contiver dados eval () (por exemplo, uma tabela: "[1, 2, 3]"Ao contrário do código, você deve alternar para o JSON, que permite que a string use um subconjunto da sintaxe do JavaScript para representar os dados. Veja também Download de JSON e JavaScript em Extensões.

Observe que muitos literais JavaScript válidos não são analisados ​​como JSON, pois a sintaxe JSON é restrita pela sintaxe JavaScript. Por exemplo, as vírgulas finais não são permitidas no JSON e os nomes das propriedades (chaves) nos literais do objeto devem ser colocados entre aspas. Certifique-se de usar um serializador JSON para gerar sequências que serão analisadas posteriormente como JSON. Transferir dados em vez de código

O exemplo a seguir usa eval () para avaliar a cadeia str. Essa seqüência consiste em instruções JavaScript que abrem uma caixa de diálogo de aviso e z conjunto para um valor de 42, quando x é cinco, e caso contrário, 0. Se a segunda instrução é executada, fazendo com eval (), que estas instruções são executadas, todas as instruções também são avaliados e o valor retornado para z foi retornado. var x = 5;