eval() est une fonction globale. JavaScript utilise eval() pour interpréter et exécuter une chaîne composée de code source javascript
var result = eval('3+2'); console.log(result,typeof result);//5 'number'
Usage
eval() n'a qu'un seul paramètre. Si le paramètre transmis n'est pas une chaîne, il renvoie directement ce paramètre. Si le paramètre est une chaîne, il compilera la chaîne sous forme de code javascript. Si la compilation échoue, une exception syntaxError est levée. Si la compilation réussit, l'exécution de ce code commence et la valeur de la dernière expression ou instruction de la chaîne est renvoyée. Si la dernière expression ou instruction n'a aucune valeur, undefined est finalement renvoyé. Si la chaîne lève une exception, cette exception transmettra l'appel à eval()
var num = 1; var str = 'test'; console.log(eval(num));//1 console.log(eval(str));//ReferenceError: test is not defined var strLong1 = 'var x = 1;var y = 2;'; console.log(eval(strLong1),x,y);//undefined 1 2 var strLong2 = 'var x = 1; x++;'; console.log(eval(strLong2),x);//1 2
scope >
eval () utilise l'environnement de portée variable dans lequel il est appelé. Autrement dit, il recherche la valeur d'une variable et définit de nouvelles variables et fonctions exactement de la même manière que le code dans la portée locale
var b = 2; function foo(str,a){ eval(str); console.log(a,b); } foo('var b = 3;',1);//1 3
Lorsqu'il est appelé via un alias, eval() exécutera sa chaîne en tant que code global de niveau supérieur. Le code exécuté peut définir de nouvelles variables globales et fonctions globales, ou attribuer des valeurs aux variables globales, mais il ne peut pas utiliser ou modifier les variables locales dans la fonction
var geval = eval; var x = 'global',y = 'global'; function f(){ var x = 'local'; eval('x += "changed";'); return x; } function g(){ var y = 'local'; geval('y += "changed";'); return y; } console.log(f(),x);//localchanged global console.log(g(),y);//local globalchanged
JavaScript interprète Beaucoup d'analyse et d'optimisation de code. Le problème avec eval() est que le code utilisé pour l'exécution dynamique ne peut généralement pas être analysé, donc l'interpréteur ne peut pas l'optimiser, ce qui entraînera une dégradation des performances
Semblable à eval() est setTimeout () , setInterval(), new Function(), etc. Ces fonctions peuvent prendre des chaînes comme paramètres et être exécutées dynamiquement lorsque le programme est en cours d'exécution. Les avantages de ce mécanisme d'exécution ne peuvent pas compenser la perte de performances, vous devez donc essayer d'éviter d'utiliser le
en raison de eval( ) la fonction est trop puissante et le mode strict lui impose des restrictions strictes
[1] Les variables ou fonctions ne peuvent pas être créées via la fonction eval(), mais leurs valeurs peuvent être interrogées et modifiées
'use strict'; eval('var x = 1;'); console.log(x);//ReferenceError: x is not defined 'use strict'; var x = 1; eval('x = 2;'); console.log(x);//2
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!