Maison  >  Article  >  interface Web  >  Explication détaillée de l'utilisation de la fonction eval() dans les compétences JavaScript_javascript

Explication détaillée de l'utilisation de la fonction eval() dans les compétences JavaScript_javascript

WBOY
WBOYoriginal
2016-05-16 15:25:541392parcourir

La fonction

eval() évalue une 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.

Grammaire

Copier le code Le code est le suivant :

eval(chaîne)

参数 描述
string 必需。要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句。

Explication détaillée de l'utilisation de la fonction eval() :

Cette fonction n'est peut-être pas utilisée trop fréquemment, mais elle a un grand effet dans certains cas. Voici une introduction à l'utilisation de la fonction eval().

Cette fonction peut accepter une chaîne str comme paramètre et exécuter cette chaîne comme un morceau de code javascript Si le résultat de l'exécution de str est une valeur, elle renverra cette valeur, sinon elle renverra un défini. Si le paramètre n'est pas une chaîne, le paramètre est renvoyé directement. L'exemple est le suivant :

eval("var a=1");//声明一个变量a并赋值1。
eval("2+3");//执行加运算,并返回运算值。
eval("mytest()");//执行mytest()函数。
eval("{b:2}");//声明一个对象。

Une attention particulière doit être portée au code ci-dessus. La dernière instruction déclare un objet. Si vous souhaitez renvoyer cet objet, vous devez imbriquer une autre couche de parenthèses à l'extérieur de l'objet, comme suit :

Copier le code Le code est le suivant :

eval("({b:2})");

Le contenu ci-dessus présente brièvement l'utilisation de la fonction eval(), qui est relativement facile à comprendre. La chose la plus déroutante à propos de cette fonction est sa portée. Présentons le contenu pertinent avec des exemples. Examinons d'abord un exemple de code :
.

function a(){ 
 eval("var x=1"); 
 console.log(x); 
} 
a(); 
console.log(x); 

Dans le code ci-dessus, la première fonction alert() peut afficher 1, tandis que la seconde signalera une erreur car x n'est pas défini.
On peut conclure des performances ci-dessus que la fonction eval() ne crée pas de nouvelle portée et que sa portée est la portée dans laquelle elle se trouve. Cela est vrai dans tous les navigateurs traditionnels, mais il est parfois nécessaire de définir la portée de la fonction eval() sur la portée globale. Bien sûr, eval() peut être utilisé dans la portée globale, mais dans les applications réelles, c'est souvent le cas. Il est nécessaire de l'utiliser dans la portée locale. L'utilisation de cette fonction avec une portée globale peut être implémentée à l'aide de window.eval(). Par exemple, le code ci-dessus peut être transformé comme suit :
.

function a(){ 
 window.eval("var x=1"); 
 console.log(x); 
} 
a(); 
console.log(x); 

Dans le code ci-dessus, les deux instructions alert() peuvent apparaître 1 normalement. Cependant, cette méthode est possible dans les navigateurs standards, mais les performances dans IE8 et les navigateurs inférieurs à IE8 sont toujours les mêmes que celles de eval(), et la portée est la portée où ils se trouvent. À l'heure actuelle, vous pouvez utiliser le window.execScript() unique du navigateur IE pour résoudre le problème des navigateurs IE8 et IE8. Afin d'être compatible avec tous les principaux navigateurs, le code est modifié comme suit :

function a(){ 
 if(window.execScript){ 
  window.execScript("var x=1"); 
 } 
 else{ 
  window.eval("var x=1"); 
 } 
 console.log(x); 
} 
a(); 
console.log(x); 

Si le navigateur prend en charge window.execScript(), utilisez cette fonction. Si ce n'est pas le cas, utilisez window.eval(). Cela peut résoudre le problème d'IE8 et des navigateurs inférieurs à IE8.

Le contenu ci-dessus est une explication détaillée de l'utilisation de la fonction eval() en JavaScript partagée par l'éditeur. J'espère qu'il vous plaira.

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