JavaScript: Funciones



En el capítulo anterior de nuestro Curso Javascript hablamos de objetos en Javascript. Casi todo es un objeto en este lenguaje, y las funciones no son la excepción.
 

1. Bloques De Funciones

 
Las funciones en Javascript son bloques de código identificados por un nombre que se pueden invocar cuando sea necesario.
 
// utilizando  ;! invocamos una función inmediatamente
;!function() {
 
  var corazones = 5;
 
  // bloque de función
  this.takeDamage = function(value) {
    corazones -= value;
  }
 
  // bloque condicional
  if (corazones > 0) {
    takeDamage(4);
    speak();
  }
 
  // bloque de función
  function speak() {
    console.log('Hola, me quedan ' + corazones + ' vidas');
  }
}();



Argumentos
Las funciones pueden recibir variables complejas como son los objetos (Ej.: Array, Date), o tipos de datos primitivos (Ej.: Integer, String); a estas variables pasadas al cuerpo de una función, se les conoce como argumentos o parámetros.

2. Paso Por Valor Y Referencia

 
En Javascript al igual que en otros lenguajes de programación los argumentos de tipos complejos son pasados por referencia y los primitivos por valor.
 
Veamos un ejemplo de paso por valor.
 
// variable numérica
var conteo = 5;
 
;!function(val) {
  val --;
}(conteo );
 
console.log(conteo ); // => 5, no se modificó
 
Ahora veamos paso por referencia.
 
// objeto a pasar a función
aprendeSoft = {
  count: 10
}
 
;!function(obj) {
    obj.count --;
}(aprendeSoft);
 
console.log(aprendeSoft.count); // => 9, si se modificó el objeto

3. Pasando Un Numero Indeterminado De Argumentos

 
Todas las funciones en Javascript tienen un objeto llamado arguments, éste actúa como un comodín para acceder a cualquier cantidad de argumentos suplidos a la función.
 
// esta función no recibe explícitamente ningún argumento
var sum = function () { 
  var length = arguments.length,
      total = 0;
 
  for (var i = 0; i < length; i++) {    
      // se suman todos los argumentos
      total += arguments[i];
  }
 
  return total;
};
 
console.log(sum(40, 10, 50)); // => 100



Tipos de funciones
En javascript todas las funciones son ejecutadas de la misma manera, lo que las diferencia es la forma en la que son evaluadas.

4. Funciones Por Declaración

 
A las funciones declaradas el interprete accede en el momento en que son leídas.
 
console.log(sum(10, 20));
 
function sum(a, b) {
    return a + b;
};

5. Funciones Por Declaración

 
Las funciones por expresión son parte de una asignación, por lo tanto no pueden ser evaluadas hasta que el programa no haga la asignación.
 
var sum = function (a, b) {
    return a + b;
};
 
console.log(sum(10, 20));

6. Comparación

 
A continuación pongo en contraste estos dos tipos de funciones:
 
console.log(declaracion())); // => Soy función por declaración
 
function declaracion() {
    console.log("Soy función por declaración");
};
 
// -----------------------------
// Si la ejecutamos antes de
console.log(expresion())); // => "TypeError: Property 'expresion' of object [object Object] is not a function
 
var expresion = function expresion() {
    console.log("Soy función por expresión");
};
//La ejecutamos después de
console.log(expresion())); // => Soy función por expresión

Comentarios

Entradas populares de este blog

Kali Linux Guia Español (Mega)(Pdf)

MEGA PAQUETE CON MAS DE 60 CURSOS DE VIDEO2BRAIN

Ethical Hacking 2.0 - Implementación de un Sistema para la Gestión de la Seguridad • [USERS] • [PDF]