====== Javascript ====== Aunque he programado durante años en javascript, siempre me llamó la atención lo flexible que es para declarar la función, he hecho estos apuntes para mostrar como ordeno lo aprendido de esta diversidad en su uso y que a mí me confundía a veces. Mostrar las diferencias en javascript ES6/ES7/ES8/ES9 FIXME ===== Función ===== Se puede declarar de 3 maneras. ==== Declaración de función ==== === Función Declarativa (Named Function) === function saludar(nombre){ return `Hola, ${nombre}!.`; } console.log( saludar("John Doe") ); === Función Anónima === * [[https://en.wikipedia.org/wiki/Anonymous_function]] const saludar = function(nombre){ return `Hola, ${nombre}!.`; } === Función Flecha (Arrow Function) === const saludar = (nombre) => { return `Hola, ${nombre}!.`; } ==== Parámetros ==== * [[https://devforum.roblox.com/t/arguments-vs-parameters-why-understanding-the-difference-matters/3338751]] * [[https://press.rebus.community/programmingfundamentals/chapter/parameters-and-arguments/]] === Parámetros opcionales === En typescript se puede poner un "?" al final de un parámetro, en javascript **NO EXISTE LA OPCION "?"** pero aprovechando que no sale mensaje de error si se pone más parámetros se puede manejar verificando si no se declaró el parámetro con "undefined", uso el typeof en el IF el igual repetido 3 veces que se usa para comparar el tipo de dato. function saludar( nombre, cercania){ if( typeof cercania === "undefined"){ return `Hola ${nombre}!.`; }else{ return `Hola ${nombre} ${cercania}!.`; } } console.log( saludar( "Billy" ) ); // 'Hola Billy!.' console.log( saludar( "Billy", "amigo") ); // 'Hola Billy amigo!.' console.log( saludar( "Billy", "amigo", "bla bla bla") ); // 'Hola Billy amigo!.' otra forma sin el else, en este caso se iguala la base con la altura si no se define la altura. function area(base, altura) { if (altura === undefined) { altura = base; // Comportamiento por defecto } return base * altura; } otra forma es definiendo en la declaración del parámetro su valor por defecto. function saludar( nombre, cercania = "amigo" ){ return `Hola ${nombre} ${cercania}!.`; } otra forma es que se puede reemplazar el if con el operador OR (||) function configurar(opcion) { opcion = opcion || 'default'; } con el operador OR si "opcion" no tiene valor coge el 'default'. === Parámetros de cantidad variable === function sumar(...numeros){ return numeros.reduce( (total, n) => total + n, 0 ); } console.log( sumar( 10,23,56,34 ) ); // 123