function (Instrucción)

Declara una nueva función. Se puede utilizar en diferentes contextos:

// in the global scope
function functionname([paramlist]) [: type] {
   [body]
}

// declares a method in a class
[attributes] [modifiers] function functionname([paramlist]) [: type] {
   [body]
}

// declares a method in an interface
[attributes] [modifiers] function functionname([paramlist]) [: type]

Argumentos

  • attributes
    Opcional. Atributos que controlan la visibilidad y el comportamiento del método.

  • modifiers
    Opcional. Modificadores que controlan la visibilidad y el comportamiento del método.

  • nombreDeFunción
    Obligatorio. Nombre de la función o método.

  • paramlist
    Opcional. Lista de parámetros delimitados por comas para la función o método. Cada parámetro puede incluir una especificación de tipo. El último parámetro puede ser una parameterarray, que se denota con tres puntos (...) seguidos de un nombre de matriz de parámetros, seguido de una anotación de tipo de matriz con tipo.

  • type
    Opcional. Tipo de valor devuelto del método.

  • body
    Opcional. Una o más instrucciones que definen cómo funciona la función o método.

Comentarios

Utilice la instrucción function para declarar una función para uso posterior. El código contenido en body no se ejecuta hasta que se llama a la función desde cualquier otro punto del script. La instrucción return se utiliza para devolver un valor de la función. No es necesario utilizar ninguna instrucción return, el programa regresará cuando llegue al final de la función.

Los métodos son similares a las funciones globales, pero difieren de ellas en que éstos pertenecen al ámbito de class o interface en el que están definidos y en que pueden tener varios modificadores que controlen su visibilidad y comportamiento. Un método de interface no puede tener cuerpo, mientras que un método de class debe tenerlo. Esta regla tiene una excepción; si un método de class es abstract o la propia class es abstract, el método no podrá tener cuerpo.

Se podrá utilizar la anotación de tipo para declarar el tipo de datos que devolverá la función o el método. Si se especifica void como tipo de valor devuelto, ninguna de las instrucciones return de la función devolverá ningún valor. Si se especifica un tipo de valor devuelto diferente de void, todas las instrucciones return de la función deberán devolver un valor que se pueda convertir en el tipo de valor devuelto especificado. El valor undefined es devuelto si se especifica un tipo de valor devuelto, pero aparece una instrucción return sin ningún valor, o si se alcanza el final de la función sin una instrucción return. Las funciones constructoras no pueden especificar un tipo de valor devuelto, debido a que el operador new devuelve automáticamente el objeto que se está creando.

Si no se especifica ningún tipo de valor devuelto para la función, éste se establece como Object o void. El tipo de valor devuelto void se selecciona sólo cuando no hay instrucciones return o cuando las instrucciones return no tienen ningún valor en el cuerpo de la función.

Una matriz de parámetros se puede utilizar como el último parámetro de una función. Cualquier argumento adicional pasado a la función (en caso de que hubiera alguno) tras los parámetros necesarios se incluirá en la matriz de parámetros. La anotación de tipo del parámetro no es opcional; debe ser una matriz con tipo. Para aceptar parámetros de tipos arbitrarios, utilice Object[] como matriz con tipo. Al llamar a una función que puede aceptar un número variable de argumentos, se deberá utilizar una matriz explícita del tipo esperado en lugar de proporcionar una lista de parámetros.

Cuando se llama a una función, hay que asegurarse de incluir siempre los paréntesis y los argumentos necesarios. La acción de llamar a una función sin paréntesis hace que se devuelva el texto de la función en lugar de los resultados de la misma.

Ejemplo 1

El ejemplo siguiente muestra el uso de la instrucción function de la primera sintaxis:

interface IForm {
   // This is using function in Syntax 3.
   function blank() : String;
}

class CForm implements IForm {
   // This is using function in Syntax 2.
   function blank() : String {
      return("This is blank.");
   }
}

// This is using function in Syntax 1.
function addSquares(x : double, y : double) : double {
   return(x*x + y*y);
}

// Now call the function.
var z : double = addSquares(3.,4.);
print(z);

// Call the method.
var derivedForm : CForm = new CForm;
print(derivedForm.blank());

// Call the inherited method.
var baseForm : IForm = derivedForm;
print(baseForm.blank());

El resultado de este programa es:

25
This is blank.
This is blank.

Ejemplo 2

En este ejemplo, una función printFacts toma como entrada String y una matriz de parámetros utilizada, para aceptar un número variable de Objects.

function printFacts(name : String, ... info : Object[]) {
   print("Name: " + name);
   print("Number of extra information: " + info.length);
   for (var factNum in info) {
      print(factNum + ": " + info[factNum]);
   }
}

// Pass several arguments to the function.
printFacts("HAL 9000", "Urbana, Illinois", new Date(1997,0,12));
// Here the array is intrepeted as containing arguments for the function.
printFacts("monolith", [1, 4, 9]);
// Here the array is just one of the arguments.
printFacts("monolith", [1, 4, 9], "dimensions");
printFacts("monolith", "dimensions are", [1, 4, 9]);

Este programa muestra el siguiente resultado cuando se ejecuta:

Name: HAL 9000
Number of extra information: 2
0: Urbana, Illinois
1: Sun Jan 12 00:00:00 PST 1997
Name: monolith
Number of extra information: 3
0: 1
1: 4
2: 9
Name: monolith
Number of extra information: 2
0: 1,4,9
1: dimensions
Name: monolith
Number of extra information: 2
0: dimensions are
1: 1,4,9

Requisitos

Versión 1 (para la sintaxis 1) Versión .NET (para las sintaxis 2 y 3)

Vea también

Referencia

new (Operador)

class (Instrucción)

interface (Instrucción)

return (Instrucción)

Conceptos

Ámbito de variables y constantes

Anotaciones de tipo

Matrices con tipo

Otros recursos

Modificadores