Maison > Article > interface Web > Introduction à l'utilisation de la fonction eval() dans les compétences JavaScript_javascript
En JavaScript, vous pouvez utiliser la fonction eval() pour analyser le code JavaScript dans la chaîne et renvoyer le résultat de l'exécution du code correspondant :
Essentiellement, eval() est une fonction de l'objet global JavaScript. Par exemple, le code ci-dessus est équivalent à :
Cependant, lors de l'utilisation de l'instruction eval(), la première méthode ci-dessus est généralement adoptée, c'est-à-dire ignorer l'objet global et utiliser directement eval().
Utilisation de eval()
Pour les deux raisons suivantes, vous devriez essayer d'éviter d'utiliser l'instruction eval() dans votre code à moins que cela ne soit vraiment nécessaire :
1. Logiquement parlant, les chaînes doivent être utilisées pour stocker du contenu et des informations pendant l'exécution du programme, et ne doivent pas être utilisées pour stocker une logique de calcul spécifique.
2. Étant donné que le paramètre eval() est une chaîne et qu'une chaîne ne peut pas être traitée lexicalement, l'interpréteur JavaScript ne peut pas optimiser l'instruction d'appel eval().
Valeur de retour de eval()
La valeur de retour de eval() suit les règles suivantes :
1. Si le paramètre de eval() n'est pas une chaîne, alors eval() renverra le paramètre directement.
2. Si le paramètre de eval() est une chaîne, alors eval() analyse la chaîne en code et l'exécute, et renvoie le résultat de la dernière ligne d'exécution de code.
3. Si la chaîne ne peut pas être analysée en code légal, eval() lancera une SyntaxError.
4. Si la chaîne peut être analysée en code légal, mais qu'une erreur est signalée lors de l'exécution de ce code, alors l'erreur sera signalée à l'instruction eval() et renvoyée par eval().
console.log(eval("42 */ 2"));//SyntaxError
console.log(eval("42 * 2; 22 * 3;"));//66. eval renvoie le résultat de la dernière expression/instruction
console.log(eval("null.toString()"));//TypeError, l'exception dans le code eval sera propagée en dehors de eval().
Environnement variable
Eval() en JavaScript a une fonctionnalité importante : le code dans la chaîne de paramètres eval() peut accéder aux variables du code externe, et peut également exposer les variables nouvellement créées dans le code de la chaîne de paramètres au code externe. Autrement dit, si la chaîne de paramètres eval() peut être analysée légalement, alors JS remplacera la ligne où se trouve eval() par le code analysé :
Il convient de noter que la condition préalable pour réaliser les fonctionnalités ci-dessus est que le code dans la chaîne de paramètres eval() puisse être légalement analysé. En plus de la syntaxe correcte du code, JS exige également que le code dans la chaîne de paramètres eval() soit « autonome » : le code doit avoir un sens uniquement en ce qui concerne le code dans la chaîne de paramètres. Par exemple, vous ne pouvez pas transmettre une chaîne telle que "return;" à la fonction eval() :
Si la fonction eval() est utilisée directement, les variables auxquelles accède le code dans la chaîne de paramètres eval() sont les variables de la fonction où se trouve l'instruction eval(), c'est-à-dire l'environnement variable utilisé par eval(). la fonction est "l'environnement de variable locale". Si vous n'utilisez pas directement la fonction eval(), mais utilisez une nouvelle variable qui pointe également vers la fonction eval(), alors les variables accessibles par le code dans la chaîne de paramètres correspondante sont des variables globales, c'est-à-dire les variables utilisées par la fonction eval(). L'environnement est "l'environnement variable global" :
Cependant, il convient de noter que le comportement dans IE6, 7 et 8 est différent. Dans IE6, 7 et 8, même si la fonction eval() est renommée, « l'environnement de variable locale » est toujours utilisé.