- Declaración y ejecución:
var numero = 450;
var otroNumero = 23;
function sumaCuadrados (a, b) {
var numero = a;
var otroNumero = b;
var calculo = (numero*numero) + (otroNumero*otroNumero);
console.log("\"numero\" es \""+numero+"\", local");
console.log("\"otroNumero\" es \""+otroNumero+"\", local");
};
function verificarGlobales() {
console.log("\"numero\" es \""+numero+"\", global");
console.log("\"otroNumero\" es \""+otroNumero+"\", global");
};
- Anónimas (expresiones):
var sumaCuadrados = function (a, b) {
return (a*a) + (b*b);
};
console.log("El .name de sumaCuadrados es "+sumaCuadrados.name)
- Funciones como dato:
function saludo () {
console.log("hola!");
};
function lanzar (funcion){
funcion();
};
- Funciones anónimas autoejecutables:
(function() {
console.log("hola Amigo/a")
})(); //ex:Jquery
- Funciones anónimas con parámetros:
( function(quien){
console.log("hola " + quien);
})("Amigo/a");
-
Función que devuelve una función anónima:
- Asignando una variable:
function saludo(quien){ return function(){ console.log("hola " + quien); } } var saluda = saludo("Amigo/a"); saluda();
- Sin asignar una variable:
function saludo(quien){ return function(){ console.log("hola " + quien); } } saludo("Amigo/a")();
- Anidación:
function saludar(quien){
function alertasaludo(){
console.log("hola " + quien);
}
return alertasaludo;
}
var saluda = saludar("Amigo/a");
saluda();
- Anidación:
function saludar(quien){
function alertasaludo(){
console.log("hola " + quien);
}
return alertasaludo;
}
saludar("Amigo/a")();
- Calcular el factorial.
function factorial(n){
if(n <= 1){
return 1
} else {
return n * factorial(n-1)
}
}
factorial(0); // n! = 1
factorial(1); // n! = 1
factorial(2); // n! = 2
factorial(3); // n! = 6 (3*2*1)
factorial(4); // n! = 24 (4*3*2*1)
factorial(5); // n! = 120 (5*4*3*2*1)
factorial(6); // n! = 720 (...)
// ...
En programación de computadoras, una devolución de llamada o retrollamada (en inglés: callback) es una función "A" que se usa como argumento de otra función "B". Cuando se llama a "B", ésta ejecuta "A". Para conseguirlo, usualmente lo que se pasa a "B" es el puntero a "A". Callbacks en Wikiwand
- Ejemplo condensado:
var quieroCallback = function(parametro, callback){
if ((callback) && (typeof callback === 'function')){
callback(parametro);
}
else
console.log(parametro, callback);
}
quieroCallback('a', 'b');
quieroCallback('a', function(val){
console.log(val);
});
- Ejemplo con Jquery:
$('#elemento').fadeIn('slow', function() {
// código del callback
});
- Otro ejemplo:
function comerSandwich(elemento1, elemento2, callback) {
console.info('ñam ñam... empiezo con el sándwich.\n\nMe gusta porque tiene tiene ' + elemento1 + ', ' + elemento2);
callback();
}
comerSandwich('jamón', 'queso', function() {
console.info('Ya terminé...');
});
- Ejemplo con Callback opcional:
function comerSandwich(elemento1, elemento2, callback) {
console.info('ñam ñam... empiezo con el sándwich.\n\nMe gusta porque tiene tiene ' + elemento1 + ', ' + elemento2);
if (callback) {
callback();
}
}
comerSandwich('jamón', 'queso');
- Sanitizar el Callback:
function comerSandwich(elemento1, elemento2, callback) {
console.info('ñam ñam... empiezo con el sándwich.\n\nMe gusta porque tiene tiene ' + elemento1 + ', ' + elemento2);
if (callback && typeof(callback) === "function") {
callback();
}
}
comerSandwich('jamón', 'queso');
function comerSandwich(elemento1, elemento2, callback) {
console.info('ñam ñam... empiezo con el sándwich.\n\nMe gusta porque tiene tiene ' + elemento1 + ', ' + elemento2);
setTimeout(alarma, 5000);
function alarma(){
console.log("ring! ring!.. pasaron los 5 segundos!");
};
if (callback && typeof(callback) === "function") {
callback();
}
}
comerSandwich('jamón', 'queso', function() {
console.log('Ya terminé...');
});