Visual Basic Scripting Edition  

Instrucción ExecuteGlobal

Ejecuta una o varias instrucciones especificadas en el espacio de nombres global de una secuencia de comandos.

ExecuteGlobal instrucción 

El argumento instrucción necesario es una expresión de cadena que contiene una o varias instrucciones para ejecutar. Incluya varias instrucciones en el argumento instrucción y utilice dos puntos o saltos de línea incrustados para separarlas.

Comentarios

En VBScript, x = y se puede interpretar de dos formas. La primera es una instrucción de asignación, donde el valor de y se asigna a x. La segunda interpretación es como una expresión que comprueba si x y y tienen el mismo valor. Si es así, el resultado es True; si no, el resultado es False. La instrucción ExecuteGlobal utiliza siempre la primera interpretación, mientras que el método Eval utiliza siempre la segunda.

Nota   En Microsoft® JScript™, no existe confusión entre asignación y comparación, porque el operador de asignación (=) es diferente del operador de comparación (==).

Todas las instrucciones utilizadas con ExecuteGlobal se ejecutan en el espacio de nombres global de la secuencia de comandos. Este permite agregar código al programa de manera que cualquier procedimiento pueda tener acceso a él. Por ejemplo, se puede ejecutar una instrucción Class de VBScript en tiempo de ejecución y las funciones podrán, a continuación, crear nuevas instancias de la clase.

Agregar procedimientos y clases en tiempo de ejecución puede ser útil, pero también introduce la posibilidad de sobrescribir variables globales y funciones ya existentes. Puesto que esto puede causar problemas de programación importantes, se debe tener especial cuidado cuando utilice la instrucción ExecuteGlobal. Si no necesita tener acceso a una variable o función fuera de un procedimiento, utilice la instrucción Execute, que sólo afecta al espacio de nombres de la función que llama.

El siguiente ejemplo ilustra el uso de la instrucción ExecuteGlobal:

Dim X         ' Declara X en el ámbito global.
X = "Global"      ' Asigna un valor a X global.
Sub Proc1   ' Declara el procedimiento.
     Dim X   ' Declara X en el ámbito local.
     X = "Local"   ' Asigna un valor a X local.
         ' La instrucción Execute aquí crea un
         ' procedimiento que, cuando se invoca, imprime X.
         ' Imprime la variable X global porque Proc2
         ' hereda todo en el ámbito global.
  ExecuteGlobal "Sub Proc2: Print X: End Sub"
  Print Eval("X")   ' Imprime X local.
  Proc2     ' Invoca a Proc2 en el ámbito global, lo que
         ' provoca que se imprima "Global".
End Sub
Proc2         ' Esta línea produce un error ya que
         ' Proc2 no está disponible fuera de Proc1.
Proc1         ' Invoca a Proc1.
  Execute "Sub Proc2: Print X: End Sub"
Proc2         ' Esta invocación se realizó correctamente
         ' porque Proc2 está ahora disponible globalmente.

El siguiente ejemplo muestra cómo se puede volver a escribir la instrucción ExecuteGlobal de manera que no tenga que delimitar todo el procedimiento entre comillas:

S = "Sub Proc2" & vbCrLf
S = S & "  Print X" & vbCrLf 
S = S & "End Sub"
ExecuteGlobal S

Requisitos

Versión 1

Ayuda de Javascript y Vbscript para Javascripts.astalaweb.com.