Curso gratuito de JavaScript. Regístrate para hacer un seguimiento de tu progreso →

JavaScript: Parámetros de funciones

Las funciones no sólo pueden devolver valores, sino también recibirlos como parámetros (también conocidos como argumentos). Ya nos hemos encontrado con parámetros de funciones muchas veces:

// Recibe un parámetro de cualquier tipo
console.log('soy un parámetro');
// Recibe dos parámetros de tipo string
// el primero es lo que buscamos, el segundo es por qué lo reemplazamos
'google'.replace('go', 'mo'); // moogle
// Recibe dos parámetros numéricos
// el primero es el índice inicial (incluido), el segundo es el índice final (no incluido)
'hexlet'.slice(1, 3); // ex

En esta lección aprenderemos a crear funciones que reciben parámetros. Supongamos que tenemos la tarea de implementar la función getLastChar(), que devuelve el último carácter de una cadena que se le pasa como parámetro. Así es como se usaría esta función:

// Pasando parámetros directamente sin variables
getLastChar('Hexlet'); // t
// Pasando parámetros a través de variables
const name1 = 'Hexlet';
getLastChar(name1); // t
const name2 = 'Goo';
getLastChar(name2); // o

De la descripción y los ejemplos de código, podemos hacer las siguientes conclusiones:

Definición de la función:

const getLastChar = (text) => {
  // Calculamos el índice del último carácter como la longitud de la cadena - 1
  return text[text.length - 1];
};

Analicémoslo. Entre paréntesis se especifica el nombre de la variable text, que es nuestro parámetro. El nombre del parámetro puede ser cualquier cosa. Lo importante es que refleje el significado del valor que contiene. Podríamos haber definido la función de esta manera:

const getLastChar = (str) => {
  return str[str.length - 1];
};

El valor específico del parámetro dependerá de cómo se llame a esta función.

// Dentro de la función, str será igual a 'hexlet'
getLastChar('hexlet'); // t

// Dentro de la función, str será igual a 'code'
getLastChar('code'); // e

// Dentro de la función, str será igual a 'Winter is coming'
// El nombre de la variable externa no está relacionado con el nombre de la variable en la definición de la función
const text = 'Winter is coming';
getLastChar(text); // g

De la misma manera, se pueden especificar dos, tres o más parámetros. Cada parámetro se separa de los demás por comas:

// función para encontrar el número medio
const average = (a, b) => {
  return (a + b) / 2;
};

average(1, 5); // 3
average(1, 2); // 1.5

https://replit.com/@hexlet/js-basics-define-functions-parameters

Lo mismo se aplica a los métodos. Pueden requerir cualquier cantidad de parámetros que necesiten para funcionar:

// el primer parámetro es lo que buscamos
// el segundo parámetro es por qué lo reemplazamos
'google'.replace('go', 'mo'); // moogle

Para crear tales funciones y métodos, debemos especificar la cantidad necesaria de parámetros en la definición, separándolos por comas y dándoles nombres descriptivos. A continuación se muestra un ejemplo de la definición de la función replace(), que reemplaza una parte de una cadena por otra:

const replace = (text, from, to) => {
  // aquí va el cuerpo de la función, pero lo omitimos para no distraernos
};

replace('google', 'go', 'mo'); // moogle

Cuando hay dos o más parámetros, el orden en que se pasan a la función se vuelve importante para casi todas las funciones. Si se cambia el orden, la función se ejecutará de manera diferente:

// no se reemplaza nada,
// ya que no hay 'mo' dentro de google
replace('google', 'mo', 'go'); // google

Tarea

Completa la función truncate(), que recorta una cadena pasada como parámetro hasta un número específico de caracteres, agrega puntos suspensivos al final y devuelve la cadena resultante. Esta lógica se utiliza a menudo en sitios web para mostrar texto largo de forma abreviada.

La función recibe dos parámetros:

  1. La cadena que se debe recortar
  2. El número de caracteres que se deben conservar

Aquí tienes un ejemplo de cómo debería funcionar la función que escribas:

// Pasando el texto directamente
// Recortando el texto, dejando 2 caracteres
truncate('hexlet', 2); // he...

// A través de una variable
const text = 'it works!';
// Recortando el texto, dejando 4 caracteres
truncate(text, 4); // it w...

Debes implementar la función truncate() por tu cuenta, en JavaScript no existe una función así. Puedes implementar esta función de diferentes maneras, sólo te daremos una pista. Para resolverlo de esta manera, necesitarás extraer una subcadena de la cadena pasada como primer parámetro de la función. Utiliza el método slice() para hacerlo. Piensa, según la tarea, desde qué índice y hasta qué índice debes extraer la subcadena.

  const word = 'welcome';
  // Puedes pasar los parámetros al método a través de variables
  const index = 3;
  palabra.slice(0, indice); // wel

Desde el punto de vista del sistema de evaluación, no importa qué método utilices para implementar la función truncate() internamente, lo importante es que cumpla con la tarea planteada.

¿El ejercicio no pasa la prueba, qué debo hacer? 😶

Si te quedaste atascado, es el momento perfecto para hacer una pregunta en las "Discusiones".
* Asegúrate de incluir la salida de las pruebas. Sin ella, es casi imposible entender qué está mal, incluso si muestras tu código. Los programadores tienen dificultades para ejecutar el código en su mente, pero casi siempre es posible entender a dónde mirar a partir del error que recibiste.

Mi código funciona en mi entorno, pero no aquí 🤨

Las pruebas están diseñadas de manera que verifican la solución de diferentes maneras y con diferentes datos. A menudo, una solución funciona con ciertos datos de entrada pero no con otros. Para entender este punto, revisa la pestaña "Pruebas" y presta atención a los mensajes de error, que suelen contener pistas.

Mi código es diferente a la solución del profesor 🤔

Esto es normal 🙆. En programación, una tarea puede tener muchas soluciones diferentes. Si tu código pasa la prueba, cumple con los requisitos de la tarea.

En raras ocasiones, la solución puede estar ajustada para pasar las pruebas, pero esto suele ser evidente.

Leí la lección, pero no entendí nada 🙄

Crear materiales de aprendizaje comprensibles para todos es bastante difícil. Hacemos nuestro mejor esfuerzo, pero siempre hay margen para mejorar. Si encuentras material que no entiendes, describe el problema en las "Discusiones". Es ideal si puedes formular los aspectos que no entiendes en forma de preguntas. Por lo general, necesitamos unos días para hacer mejoras.

Por cierto, tú también puedes contribuir a mejorar los cursos: en la parte inferior hay un enlace al código fuente de las lecciones, que se puede modificar directamente en el navegador.

Consejos útiles


¿Encontraste un error? ¿Quieres añadir algo? Las solicitudes de extracción son bienvenidas. https://codica.la/errores
El reactor de código está disponible en la versión principal →