Declara el nombre, argumentos y código que forman el cuerpo de un procedimiento Function.
[Public [Default] | Private] Function nombre [(listaArgumentos)] [instrucciones] [nombre = expresión] [Exit Function] [instrucciones] [nombre = expresión] End Function
El argumento listaArgumentos tiene la siguiente sintaxis:
[ByVal | ByRef] nombreVariable[( )]
Si no se especifica explícitamente con Public o Private, los procedimientos Function son públicos de manera predeterminada, es decir, son visibles para todos los otros procedimientos de su secuencia de comandos. El valor de las variables locales en el procedimiento Function no se conserva entre llamadas al procedimiento.
No puede definir un procedimiento Function dentro de cualquier otro procedimiento (p. ej. Sub o Property Get).
La instrucción Exit Function provoca una salida inmediata de un procedimiento Function. La ejecución del programa continúa con la instrucción que sigue a la que llamó al procedimiento Function. Puede aparecer cualquier número de instrucciones Exit Function en cualquier lugar de un procedimiento Function.
Al igual que un procedimiento Sub, un procedimiento Function es un procedimiento separado que puede aceptar argumentos, ejecutar una serie de instrucciones y cambiar los valores de sus argumentos. Sin embargo, a diferencia de un procedimiento Sub, puede utilizar un procedimiento Function en la parte derecha de una expresión del mismo modo que utiliza cualquier función intrínseca, como Sqr, Cos o Chr, cuando desea utilizar el valor devuelto por la función.
Puede llamar a un procedimiento Function con el nombre de la función, seguido por el argumento entre paréntesis, en una expresión. Consulte la instrucción Call para obtener información específica acerca de cómo llamar a procedimientos Function.
Precaución Los procedimientos Function pueden ser recursivos, es decir, pueden llamarse a sí mismos para realizar una tarea concreta. Sin embargo, la recursividad puede dar lugar a un desbordamiento de pila.
Para devolver un valor desde una función, asigne el valor al nombre de la función. Cualquier número de dichas asignaciones puede aparecer en cualquier lugar dentro del procedimiento. Si no se asigna ningún valor a nombre, el procedimiento devuelve un valor predeterminado: una función numérica devuelve 0 y una función de cadena devuelve una cadena de longitud cero (""). Una función que devuelve una referencia de objeto, devuelve Nothing si no se asigna ninguna referencia de objeto a nombre (mediante Set) dentro de Function.
El siguiente ejemplo muestra cómo asignar un valor de retorno a una función denominada BinarySearch. En este caso, se asigna False al nombre para indicar que no se ha encontrado algún valor.
Function
BusquedaBinaria(. . .)
. . .
' ' Valor no encontrado. Devuelve un valor False.
If lower > upper Then
BusquedaBinaria = False
Exit Function
End If
. . .
End Function
Las variables utilizadas en los procedimientos Function pertenecen a dos categorías: aquellas que se declaran explícitamente dentro del procedimiento y aquellas que no. Las variables que se declaran explícitamente dentro de un procedimiento (con Dim o su equivalente) son siempre locales al procedimiento. Las variables que se utilizan pero no se declaran explícitamente dentro de un procedimiento son también locales a no ser que se declaren explícitamente en algún nivel superior fuera del procedimiento.
Precaución Un procedimiento puede utilizar una variable que no se declare explícitamente en el procedimiento, pero puede producirse un conflicto de nomenclatura si cualquiera de los elementos que ha definido tiene el mismo nombre en el nivel de secuencia de comandos. Si el procedimiento hace referencia a una variable que no está declarada y que tiene el mismo nombre que otro procedimiento, constante o variable, se asume que su procedimiento hace referencia a dicho nombre del nivel de secuencia de comandos. Para evitar este tipo de conflicto, utilice una instrucción Option Explicit con la que se fuerce la declaración explícita de variables.
Precaución Puede que VBScript reorganice las expresiones aritméticas para aumentar la eficacia interna. Evite utilizar un procedimiento Function en una expresión aritmética cuando la función cambie el valor de las variables en la misma expresión.
Instrucción Call | Instrucción Dim | Instrucción Exit | Nothing | Instrucción Set | Instrucción Sub
Ayuda de Javascript y Vbscript para Javascripts.astalaweb.com. |