Los parámetros predeterminados, extendidos y de descanso se agregaron en ES6.
Parámetro predeterminado : se utiliza para dar los valores predeterminados a los argumentos, si no se proporciona ningún parámetro en la llamada a la función.
Sintaxis:
function fnName(param1 = defaultValue1, ..., paramN = defaultValueN) { ... }
Ejemplo 1: en el siguiente ejemplo, la primera función da el resultado 7, mientras que la segunda llamada de función será «indefinida» ya que no pasamos ningún segundo argumento.
Javascript
<script> function add(a, b) { return a + b } console.log(add(5, 2)); // 7 console.log(add(5)); // NaN </script>
Producción:
7 NaN
Ejemplo 2: En este ejemplo, usamos parámetros predeterminados en los que generalmente damos un valor predeterminado si no se proporciona ningún argumento. Tomamos un valor predeterminado de «b» para que en la segunda llamada de función, no proporcionemos ningún argumento, y se tome su valor predeterminado.
Javascript
<script> function add(a, b = 3) { return a + b } console.log(add(5, 2)) console.log(add(5)) </script>
Producción:
7 8
Operador de propagación: es otro operador proporcionado a través de ES6, generalmente distribuye datos de array/lista.
En el siguiente ejemplo, estamos calculando min de todos los números
Ejemplo 1:
Javascript
<script> console.log(Math.min(1, 2, 3, -1)); </script>
Producción:
-1
Ejemplo 2: Considere que tenemos una array en lugar de una lista, entonces la función min() anterior no funcionará y dará «NaN».
Javascript
<script> // Without spread operator let arr = [1, 2, 3, -1]; console.log(Math.min(arr)); // NaN </script>
Producción:
NaN
Ejemplo 3: cuando se usa …arr, generalmente se propagan los valores de arr en la función min() .
Javascript
<script> // Spread operator let arr = [1, 2, 3, -1]; console.log(Math.min(...arr)); // -1 </script>
Producción:
-1
Operador Rest: Permite que una función acepte un número indefinido de argumentos si no estamos seguros de cuántos argumentos recibirá.
Sintaxis:
function f(a, b, ...args) { ... }
Ejemplo: En el siguiente ejemplo, estamos usando el parámetro resto que permite tomar parámetros indefinidos.
Javascript
<script> function myFun(a, b, ...manyMoreArgs) { console.log("a", a) console.log("b", b) console.log("manyMoreArgs", manyMoreArgs) } myFun("one", "two", "three", "four", "five", "six"); </script>
Producción: