CoffeeScript - Funciones

Una función es un bloque de código reutilizable que se puede llamar en cualquier parte de su programa. Esto elimina la necesidad de escribir el mismo código una y otra vez. Ayuda a los programadores a escribir códigos modulares.

Las funciones permiten al programador dividir un programa grande en varias funciones pequeñas y manejables.

En general, usando JavaScript, podemos definir dos tipos de funciones: named functions, las funciones regulares con el cuerpo del nombre de la función y, Function expressions. Usando expresiones de función, podemos asignar funciones a variables.

//named function
function sayHello(){
   return("Hello there");
}
 
//function expressions
var message = function sayHello(){
   return("Hello there");
}

Funciones en CoffeeScript

La sintaxis de función en CoffeeScript es más simple en comparación con JavaScript. En CoffeeScript, solo definimos expresiones de función.

los functionLa palabra clave se elimina en CoffeeScript. Para definir una función aquí, tenemos que usar una flecha delgada (->).

Detrás de escena, el compilador CoffeeScript convierte la flecha en la definición de función en JavaScript como se muestra a continuación.

(function() {});

No es obligatorio utilizar el returnpalabra clave en CoffeeScript. Cada función en CoffeeScript devuelve la última declaración en la función automáticamente.

  • Si queremos volver a la función que llama o devolver un valor antes de llegar al final de la función, entonces podemos usar el return palabra clave.

  • Además de las funciones en línea (funciones que están en una sola línea), también podemos definir funciones multilínea en CoffeeScript. Dado que se eliminan las llaves, podemos hacerlo manteniendo las sangrías adecuadas.

Definición de una función

A continuación se muestra la sintaxis para definir una función en CoffeeScript.

function_name = -> function_body

Ejemplo

A continuación se muestra un ejemplo de una función en CoffeeScript. Aquí, hemos creado una función llamadagreet. Esta función devuelve automáticamente la declaración que contiene. Guárdalo en un archivo con el nombrefunction_example.coffee

greet = -> "This is an example of a function"

Compílelo ejecutando el siguiente comando en el símbolo del sistema.

c:\>coffee -c function_example.coffee

Al compilar, genera el siguiente código JavaScript. Aquí puede observar que el compilador CoffeeScript devolvió automáticamente el valor de cadena en la función denominadagreet().

// Generated by CoffeeScript 1.10.0
(function() {
  var greet;
  
  greet = function() {
    return "This is an example of a function";
  };

}).call(this);

Funciones multilínea

También podemos definir una función con varias líneas manteniendo sangrías en lugar de llaves. Pero tenemos que ser consistentes con la sangría que seguimos para una línea a lo largo de una función.

greet =  ->
  console.log "Hello how are you"

Al compilar, el CoffeeScript anterior le proporciona el siguiente código JavaScript. El compilador CoffeeScript toma el cuerpo de la función que hemos separado usando sangrías y colocado entre llaves.

// Generated by CoffeeScript 1.10.0
(function() {
  var greet;

  greet = function() {
    return console.log("Hello how are you");
  };

}).call(this);

Funciones con argumentos

También podemos especificar argumentos en una función usando paréntesis como se muestra a continuación.

add =(a,b) ->
  c=a+b
  console.log "Sum of the two numbers is: "+c

Al compilar el archivo CoffeeScript anterior, generará el siguiente JavaScript.

// Generated by CoffeeScript 1.10.0
(function() {
  var add;

  add = function(a, b) {
    var c;
    c = a + b;
    return console.log("Sum of the two numbers is: " + c);
  };

}).call(this);

Invocar una función

Después de definir una función, necesitamos invocar esa función. Puede simplemente invocar una función colocando paréntesis después de su nombre como se muestra en el siguiente ejemplo.

add = ->
  a=20;b=30
  c=a+b
  console.log "Sum of the two numbers is: "+c  
add()

Al compilar, el ejemplo anterior le da el siguiente JavaScript

// Generated by CoffeeScript 1.10.0
(function() {
  var add;

  add = function() {
    var a, b, c;
    a = 20;
    b = 30;
    c = a + b;
    return console.log("Sum of the two numbers is: " + c);
  };
  add();
}).call(this);

Al ejecutar el código CoffeeScript anterior, genera la siguiente salida.

Sum of the two numbers is: 50

Invocar funciones con argumentos

De la misma manera, podemos invocar una función con argumentos pasándolos como se muestra a continuación.

my_function argument_1,argument_2
or
my_function (argument_1,argument_2)

Note - Al invocar una función pasándole argumentos, el uso de paréntesis es opcional.

En el siguiente ejemplo, hemos creado una función llamada add() que acepta dos parámetros y lo hemos invocado.

add =(a,b) ->
  c=a+b
  console.log "Sum of the two numbers is: "+c
add 10,20

Al compilar, el ejemplo anterior le proporciona el siguiente JavaScript.

// Generated by CoffeeScript 1.10.0
(function() {
  var add;

  add = function(a, b) {
    var c;
    c = a + b;
    return console.log("Sum of the two numbers is: " + c);
  };

  add(10, 20);

}).call(this);

Al ejecutar, el código CoffeeScript anterior genera la siguiente salida.

Sum of the two numbers is: 30

Argumentos predeterminados

CoffeeScript también admite argumentos predeterminados. Podemos asignar valores predeterminados a los argumentos de una función, como se muestra en el siguiente ejemplo.

add =(a = 1, b = 2) ->
  c=a+b
  console.log "Sum of the two numbers is: "+c
add 10,20

#Calling the function with default arguments
add()

Al compilar, el CoffeeScript anterior genera el siguiente archivo JavaScript.

// Generated by CoffeeScript 1.10.0
(function() {
  var add;

  add = function(a, b) {
    var c;
    if (a == null) {
      a = 1;
    }
    if (b == null) {
      b = 2;
    }
    c = a + b;
    return console.log("Sum of the two numbers is: " + c);
  };

  add(10, 20);
  add()

}).call(this);

Al ejecutar el código CoffeeScript anterior, genera la siguiente salida.

Sum of the two numbers is: 30
Sum of the two numbers is: 3