Visual Basic Scripting Edition  

Instrucción Function

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 

Argumentos

Public
Indica que el procedimiento Function es accesible para todos los otros procedimientos de todas las secuencias de comandos.
Default
Utilizado sólo con la palabra clave Public en un bloque Class para indicar que el procedimiento Function es el método predeterminado para la clase. Se produce un error si se especifica más de un error Default en una clase.
Private
Indica que el procedimiento Function es accesible sólo para otros procedimientos en la secuencia de comandos donde se declara o si la función es un miembro de una clase y que el procedimiento Function es accesible sólo a otros procedimientos en dicha clase.
nombre
Nombre de Function. Sigue las convenciones de nomenclatura estándar de las variables.
listaArgumentos
Lista de variables que representan los argumentos que se pasan al procedimiento Function cuando se le llama. Las comas separan las variables múltiples.
instrucciones
Cualquier grupo de instrucciones que se van a ejecutar dentro del cuerpo del procedimiento Function.
expresión
Valor de retorno de Function.

El argumento listaArgumentos tiene la siguiente sintaxis:

[ByVal | ByRef] nombreVariable[( )]

Argumentos

ByVal
Indica que el argumento se ha pasado por valor.
ByRef
Indica que el argumento se ha pasado por referencia.
nombreVariable
Nombre de la variable que representa el argumento. Sigue las convenciones de nomenclatura estándar de las variables.

Comentarios

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.

Requisitos

Versión 1

Consulte tambié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.