Funciones, consideraciones

Funciones nativas

Hay miles de funciones nativas en JavaScript. Por lo general a esto se le llama librería. Pero JavaScript no tiene una librería como tal, estas funciones nativas están en el core.

parseInt();
alert();
prompt();

Lo anterior son ejemplos de funciones nativas

Diferencia entre métodos y funciones

Se podría decir que son lo mismo, ejecutan cosas, pero los métodos tienen el nombre de la variable seguido de un punto y el método …o la función.

parseInt(nomVar1); //Esto es una función
nomVar2.toString(); //Esto es un método

Parámetros y argumentos

function saludar(nombre, apellido) { // nombre y apellido son parámetros. 
    console.log( `Hola ${nombre}  ${apellido} ` );  
}
saludar('Juan', 'De la torre'); // Pablo y De la torre son argumentos, son los valores reales.

saludar();

Valores por default

Abajo los valores por default están indicados para ambos parámetros.

function saludar(nombre = 'Desconocido', apellido = '') { 
    console.log( `Hola ${nombre}  ${apellido} ` );
}
saludar('Brigzen', 'Coronado');     // Arrojará: Hola Brigzen Coronado
saludar('Juan');                            // Arrojará: Hola Brigzen
saludar();                                     // Arrojará: Hola Desconocido

Comunicación entre funciones

Para que finalmente nuestro código sea un script es necesario que una función arranque el sistema pero que luego no sea necesario generar algún evento para que otras funciones arranquen. Para ello las funciones se encadenan, es decir, una función se ejecuta y dentro de su mismo código manda a llamar a otra función.

iniciarApp();

function iniciarApp() {
    console.log('Iniciando App...');
    segundaFuncion();
}
function segundaFuncion() {
    console.log('Desde la segunda función...')
    usuarioAutenticado('Pablo');
}
function usuarioAutenticado(usuario) {
    console.log('Autenticando usuario...');
    console.log(`Usuario autenticado con éxito ${usuario} `)
}

Return y llamar la función

Algo que este instructor no ha explicado bien es que tengo que tomar en cuenta que cuando la función retorne un valor, yo debo asignar ese valor a una variable. Por lo tanto, en muchos casos, voy a llamar una función del modo:

nomVar = nomFunc(argumento);

Esto es así porque tengo que hacer algo con el valor que la función va a retornar.

Return y encadenamiento de funciones

Un ejemplo de los dos puntos anteriores

let total = 0;
function agregarCarrito(precio) {
    return total += precio;
}

function calcularImpuesto(total) {
    return 1.15 * total;
}

total = agregarCarrito(200);
total = agregarCarrito(300);
total = agregarCarrito(400);
console.log(total);

const totalPagar = calcularImpuesto(total);

console.log(`El total a pagar es de ${totalPagar}`);

Se observa en la consola así:

Aunque no veo del todo que se pasen valores

Métodos de propiedad, funciones en objetos

Tal como se observa

const reproductor = {
    reproducir: function(id) {
        console.log(`Reproduciendo canción id ${id}`);
    },
    pausar: function() {
        console.log('pausando...');
    },
    borrar: function(id) {
        console.log(`Borrando canción con id: ${id}`)
    },
    crearPlaylist: function(nombre) {
        console.log(`Creando la Playlist ${nombre}`);
    },
    reproducirPlaylist: function(nombre) {
        console.log(`Reproduciendo la Playlist ${nombre}`)
    }
}
reproductor.reproducir(30);
reproductor.pausar();

// Tambien los métodos pueden quedarse por fuera
// reproductor.borrar = function(id) {
    
// }
reproductor.borrar(20);
reproductor.crearPlaylist('Heavy Metal');
reproductor.reproducirPlaylist('Heavy Metal');

Es un objeto que tiene como propiedades un conjunto de funciones. A estas funciones podemos podemos llamarlas por medio de la sintaxis del punto como se se en el ejemplo de arriba.

De hecho también se podría crear una función más en el objeto dado en el desarrollo del código tal como:

reproductor.nuevaFuncion = function() {
}