"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Quando usar `avaliar ()` e `new function ()` em javascript?

Quando usar `avaliar ()` e `new function ()` em javascript?

Postado em 2025-04-13
Navegar:222

When to Use `eval()` vs `new Function()` in JavaScript?

distinguindo avaliar () e new function () em javascript

em javascript, os desenvolvedores geralmente encontram duas funções que parecem executar uma tarefa semelhante: avalia () e nova função (). Embora ambas as funções avaliem as seqüências de strings como código, seus mecanismos e implicações subjacentes são significativamente diferentes. Isso significa que ele tem acesso a variáveis ​​locais definidas no escopo atual. Por outro lado, a nova função () analisa o código JavaScript armazenado em uma string em um objeto de função, que pode ser chamado. Este objeto de função é criado em um escopo separado e, portanto, não pode acessar as variáveis ​​locais do ambiente de chamada. return evun ('(' string ')'); } var func = function (string) { return (nova função ('return (' string ')') ()); } console.log (avaliar ('2 1')); console.log (func ('2 1'));

Ambas as funções gerarão o resultado esperado de 3. var a = 11; Eval ('(a = 22)'); // modifica a variável local na função `test1` alerta (a); // Alerta 22 } Nesse caso, usando avaliar () modificar a variável local a porque a avaliação ocorre no escopo da função Test1. No entanto, se usamos a nova função ('retornar (a = 22);') (), em vez disso, a variável local a permaneceria não afetada porque o código é executado em um escopo separado. A entrada maliciosa pode expor informações confidenciais ou executar o código arbitrário. Portanto, é altamente recomendável evitar o uso dessas funções, a menos que seja absolutamente necessário. Eval () avalia as seqüências de seqüências dentro do escopo de execução atual, enquanto a nova função () cria um novo escopo para a avaliação. Compreender essa distinção é crucial para a programação eficaz de JavaScript e manutenção da segurança.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3