Cuando estaba escribiendo un programa por la tarde, encontré un problema de redefinición variable. Específicamente, la misma variable se definió en dos lugares en una función, y las dos variables se colocaron en dos partes de la declaración IF. Originalmente pensé que las dos definiciones en diferentes bloques en la declaración no deberían tener ningún efecto. Sin embargo, durante la operación, IIS llevó a la variable a ser redefinición, y eliminar la definición duplicada es correcto.
Después de resolver el problema, de repente pensé en leer un artículo en el blog de Fdream "JavaScript Varibles sin alcance de nivel de bloque". Parece que estos dos son similares. En VBScript, las variables tampoco tienen alcance de nivel de bloque.
Después de leer ese artículo nuevamente, también hice un experimento y obtuve el resultado: en VBScript, el alcance de la variable definida en la función es toda la función, no el nivel de bloque, sin importar dónde se define la variable en la función. Por lo tanto, se puede usar una variable en una función en toda la función sin importar dónde se define en la función.
Aquí hay algunos ejemplos para ilustrar este problema.
La copia del código es la siguiente:
OpcionExpliCit
Subfoo ()
Dimvar
var = "¡Hola, mundo!"
Msgboxvar
Endsub
Callfoo ()
El siguiente código es equivalente al código anterior, pero la definición de VAR se coloca al final de la función:
La copia del código es la siguiente:
OpcionExpliCit
Subfoo ()
var = "¡Hola, mundo!"
Msgboxvar
Dimvar
Endsub
Callfoo ()
El siguiente ejemplo muestra que no importa dónde se define la variable, se puede usar en toda la función. Por supuesto, si la definición se coloca en una posición especial, será beneficioso para la claridad del código, es más conveniente leerla y modificarla.
La copia del código es la siguiente:
OpcionExpliCit
Subfoo ()
Dimvar1
var1 = "sí"
Msgbox "var1:" & var1 & vbcrlf & "var2:" & var2
Ifvar1 = "sí" entonces
Dimvar2
var2 = "no"
Endif
Msgbox "var1:" & var1 & vbcrlf & "var2:" & var2
Endsub
Callfoo ()
En el desarrollo de ASP, la práctica habitual al escribir una función es definir la variable hasta que se use. Aunque el alcance de la variable no tiene nada que ver con la posición de la definición, creo que es mejor escribirlo antes de que se use la variable. Es más conveniente modificar el código en el futuro, por lo que no tiene que recurrir al encabezado de funciones para modificar la definición de variable después de modificarlo.