Saltar al contenido principal
Codigo Heroe
Tarea anterior
Funciones7/19
A la lista de tareas
  1. 1. Cálculo de millas con variables
  2. 2. Condición para vuelos largos
  3. 3. Reutilizar variables sin declararlas de nuevo
  4. 4. Crear una función
  5. 5. Llamar a una función
  6. 6. Parámetros y argumentos
  7. 7. Orden de los argumentos
  8. 8. Devolver un valor con return
  9. 9. Parámetros booleanos
  10. 10. Guardar el resultado en una variable
  11. 11. Salida anticipada con return
  12. 12. Simplificar el cálculo con una variable
  13. 13. Agregar una condición al cálculo
  14. 14. Llamar a una función desde otra
  15. 15. Agregar un parámetro y redondear el resultado
  16. 16. Devolver y usar la cantidad de vuelos
  17. 17. Reutilizar los resultados de una función
  18. 18. Comparar los resultados
  19. 19. Llamar a funciones dentro de un ciclo
Siguiente tarea
  • Matriz de skills
  • Cursos
  • Registro
  • Iniciar sesión

Loading…
En unos segundos, estará listo.

  • Teoría
  • Teoría

Orden de los argumentos

En el ejercicio anterior encontramos un valor extraño: NaN. Significa «not a number» («no es un número») e indica que no se puede obtener el resultado numérico de una operación. Veamos de dónde salió NaN. Si una función tiene un parámetro, pero no le pasamos un argumento, ese parámetro tendrá el valor undefined, es decir, «no definido», dentro de la función. Las operaciones aritméticas con undefined dan NaN.

La función calculateMiles esperaba recibir un número y, mientras no se lo pasamos al llamarla, no pudo trabajar correctamente:

let calculateMiles = function (distance) {
  …
  // Si no se pasa el argumento, la variable contendrá NaN
  let miles = distance * percent;
  …
}

Hay otro detalle sobre los argumentos: hay que pasarlos en el mismo orden en que se declararon los parámetros de la función.

Dejemos por un momento el cálculo de millas y hablemos de gustos literarios. Tenemos una función getFavoriteBook que muestra en la consola un mensaje sobre el libro favorito de una persona. Tiene dos parámetros: el primero se llama userName (nombre de usuario) y el segundo, bookName (título del libro).

let getFavoriteBook = function (userName, bookName) {
  console.log('Me llamo ' + userName + '. Mi libro favorito es: ' + bookName);
}

Supongamos que nuestro usuario se llama Semión y su libro favorito es «El erizo en la niebla». Pasemos estos argumentos a la función: primero el título del libro y después el nombre del usuario.

let getFavoriteBook = function (userName, bookName) {
  // El parámetro userName contiene 'El erizo en la niebla'
  // El parámetro bookName contiene 'Semión'
  …
}

// Llamamos a la función
getFavoriteBook('El erizo en la niebla', 'Semión');
// Mostrará: Me llamo El erizo en la niebla. Mi libro favorito es: Semión

Algo salió mal. ¿Por qué obtuvimos ese resultado? Pasamos el nombre del usuario y el título del libro, tal como correspondía.

Todo depende del orden de los valores que pasamos. Los parámetros funcionan como variables: el valor del argumento se guarda en el parámetro y luego se usa dentro de la función por su nombre. Eso fue exactamente lo que ocurrió. El primer parámetro es userName y el primer argumento es 'El erizo en la niebla'. Por eso ese argumento se guardó en userName, mientras que 'Semión' pasó a bookName. Tú sabes cuál es el nombre y cuál es el título del libro, pero JavaScript no. Lo interpreta todo literalmente: lo primero que pasamos va al primer parámetro. El orden de los argumentos corresponde al orden de los parámetros de la función. Nuestros parámetros están en este orden: userName, bookName. Por eso debemos pasar primero el nombre del usuario y después el título del libro.

let getFavoriteBook = function (userName, bookName) {
  // El parámetro userName contiene 'Semión'
  // El parámetro bookName contiene 'El erizo en la niebla'
  …
}

// Llamamos a la función
getFavoriteBook('Semión', 'El erizo en la niebla');
// Mostrará: Me llamo Semión. Mi libro favorito es: El erizo en la niebla

Ahora pasamos los argumentos en el orden correcto y el mensaje tiene sentido.

Practiquemos llamando a una función con argumentos en distintos órdenes.

En el ejemplo usamos cadenas, pero con los números la situación puede ser aún más curiosa. Si pasamos valores de distintos tipos, por ejemplo números y cadenas, en un orden incorrecto, podemos obtener resultados inesperados. Puede haber una concatenación: el número se une a la cadena y el resultado es otra cadena. O podemos obtener el valor NaN.

  • script.js
JavaScript
let showGreeting = function (name, age) { console.log('¡Hola! Me llamo ' + name + '. Tengo ' + age + ' años.'); };
Consola

El código ha cambiado, haga clic en "Ejecutar" o active la ejecución automática.

Resultado de la ejecución

ObjetivosRealizado
0

    Llama a showGreeting con distintos argumentos. Escribe cada llamada en una nueva línea.

    1. Llama a la función sin argumentos.
    2. Llama a la función con el argumento 5.
    3. Llama a la función con los argumentos 5 y 'Cupcake'.
    4. Llama a la función con los argumentos 'Cupcake' y 5.
    Codigo Heroe

    © 2023-2026, codigoheroe.com