Maison  >  Article  >  interface Web  >  eval est-il une méthode dans es6 ?

eval est-il une méthode dans es6 ?

WBOY
WBOYoriginal
2022-08-30 17:16:021689parcourir

eval n'est pas une méthode dans es6 ; cette méthode est en JavaScript et est utilisée pour calculer les chaînes JavaScript et exécuter la chaîne en tant que code de script. Si la chaîne entrante est une expression, le résultat de l'évaluation de l'expression est renvoyé. , et la syntaxe est "eval(string)".

eval est-il une méthode dans es6 ?

L'environnement d'exploitation de ce tutoriel : système Windows 10, ECMAScript version 6.0, ordinateur Dell G3.

eval n'est pas une méthode dans es6

La fonction eval() calcule la chaîne JavaScript et l'exécute sous forme de code de script.

Si l'argument est une expression, la fonction eval() exécutera l'expression. Si l'argument est une instruction Javascript, eval() exécutera l'instruction Javascript. La fonction

eval() exécutera la chaîne entrante sous forme de code JavaScript. Si la chaîne entrante est une expression, elle renverra le résultat de l'évaluation de l'expression, sinon elle renverra un défini.

Description

  • Si le paramètre passé à eval() n'est pas une chaîne, le paramètre sera renvoyé directement.

  • Lorsque eval() est appelé directement en mode non strict, les variables déclarées à l'aide de var et les fonctions déclarées à l'aide de function modifieront la portée lexicale actuelle. Les variables déclarées à l'aide de let et const ne modifieront pas la portée lexicale actuelle. la portée lexicale sera créée à l’heure actuelle.

  • Lorsque eval() est indirectement référencé en mode non strict, il s'exécutera directement dans l'environnement global. Les variables déclarées à l'aide de var et les fonctions déclarées à l'aide de function modifieront la portée lexicale globale, et les variables déclarées à l'aide de let et const le feront. La portée lexicale globale ne sera pas modifiée, mais une nouvelle portée lexicale sera créée dans l'environnement global.

  • Lorsque eval() est appelé directement en mode strict, une nouvelle portée lexicale indépendante sera créée à l'heure actuelle.

  • Lorsque eval() est indirectement référencé en mode strict (uniquement lorsque le mode strict est activé dans la chaîne dans eval(), la chaîne sera exécutée en mode strict), une nouvelle chaîne indépendante sera créée dans le global environnement Portée lexicale.

  • L'utilisation de window.eval() équivaut à une référence indirecte à eval() .

  • eval() Le code exécuté ne peut appeler que l'interpréteur JS (Interpreter) pour interpréter et exécuter, et ne peut pas être optimisé par le compilateur juste à temps (JIT Compiler). Le code exécuté dans eval() peut provoquer. le moteur JS pour la recherche et l'affectation de variables sont effectués dans le code machine généré, provoquant des problèmes de performances.

  • eval() Une utilisation inappropriée peut rendre la chaîne exécutée à l'intérieur vulnérable à des modifications malveillantes, provoquant des problèmes de sécurité (tels que des attaques XSS).

  • L'utilisation de eval() interférera avec le comportement des minificateurs de code. Les outils de compression de code renomment généralement les noms de variables locales en noms de variables plus courts (tels que a et b, etc.) pour réduire la taille du code. Lorsque eval() est utilisé, puisque les variables locales externes sont accessibles par eval(), l'outil de compression de code ne compressera pas les noms de variables locales accessibles par eval(), ce qui réduira le taux de compression du code.

Syntaxe

eval(string)

L'exemple est le suivant :

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>123</title>
</head>
<body>
<script>
eval("x=10;y=20;document.write(x*y)");
document.write("<br>" + eval("2+2"));
document.write("<br>" + eval(x+17));
</script>
</body>
</html>

Résultat de sortie :

eval est-il une méthode dans es6 ?

【Recommandations associées : tutoriel vidéo javascript, interface Web

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn