Les trois instructions (fonctions) Eval, Execute et ExecuteGlobal exécutent toutes des expressions de chaîne, mais elles sont différentes. Eval évalue une expression et renvoie le résultat.
Syntaxe : [result = ]eval_r(expression_r)
expression_r est une chaîne de toute expression VBScript valide
Exemple:
Copiez le code comme suit :
réponse.Write(eval_r(3+2)) 'Sortie 5
3+2 est mis entre guillemets, indiquant qu'il s'agit d'une chaîne, mais aux yeux d'Eval, il est exécuté comme une expression 3+2.
Execute exécute une ou plusieurs instructions spécifiées. Utilisez des deux-points (:) pour séparer plusieurs instructions.
Syntaxe : Exécuter des instructions
Exemple:
Exécuter la réponse.Write(abc) 'Sortie abc
Copier le code
réponse.Write(abc) est placé entre guillemets pour indiquer une chaîne
Mais aux yeux d'Execute, il est exécuté comme une instruction réponse.Write(abc).
ExecuteGlobal exécute une ou plusieurs instructions spécifiées dans l'espace de noms global.
Syntaxe : Instruction ExecuteGlobal
Exemple:
Copiez le code comme suit :
faible c
c = variable globale
sous S1()
faible c
c = variable locale
Exécuter réponse.Write(c) 'Variables locales de sortie
ExecuteGlobal réponse.Write(c) 'Variables globales de sortie
fin du sous
Exécuter réponse.Write(c) 'Variables globales de sortie
appeler S1()
La variable c est définie à la fois dans la portée globale et dans la portée de la fonction. Execute décide d'utiliser des variables locales ou des variables globales en fonction de son emplacement, tandis qu'ExecuteGlobal ne reconnaît toujours que c dans la portée globale.
Résumer:
Eval n'exécute qu'une seule instruction. L'instruction peut ou non renvoyer une valeur.
Execute exécute une ou plusieurs instructions en ignorant la valeur de retour de l'instruction
ExecuteGlobal exécute une ou plusieurs instructions et ignore la valeur de retour de l'instruction. Lorsqu'une variable globale et une variable locale portent le même nom, la variable globale est toujours utilisée.
Avis:
Dans VBScript, = est utilisé pour l'affectation et la comparaison. Par exemple, a=b peut être considéré comme attribuant la valeur de b à a, ou on peut dire qu'il détermine si a et b sont égaux. Ainsi, eval_r(a=. b) représente-t-il une opération d'affectation ou de comparaison ?
Il existe une convention ici. Dans Eval, a=b signifie toujours une opération de comparaison, et dans Execute et ExecuteGlobal, cela signifie toujours une affectation.