Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
4
respuestas

Por qué se pone "var altura = serie[i];" y no "var altura = serie2009[i];"?

Tengo estas duda estando dentro del loop for:

Mi duda es: ¿cómo sabe el programa a qué serie se refiere si el nombre de los arrays es "serie2009" y "serie2019"? Es decir, ¿cómo asocia la palabra "serie" al nombre del array cuando quiere hallar el índice [ i ]?

for (var i=0; i<serie2009.length ; i++)  {         

        var altura = **serie[i]**;  
        dibujarRectangulo(x, y+sumaAltura, 50, altura, colores[i]);
        sumaAltura = sumaAltura + altura;             
    }
4 respuestas

Lo que sucede es que cuando definimos la función dibujarBarra, le estamos diciendo que espera recibir 5 argumentos: x, y, serie, colores y texto.

Entonces, cuando llamamos a la función y le pasamos los argumentos en un orden específico, el programa sabe cuál es el valor de cada uno de esos argumentos.

En el caso de serie, aunque el nombre del array sea serie2009 o serie2019, lo que importa es que ese array sea el tercer argumento que le pasamos a la función dibujarBarra. Podríamos haber llamado al array de cualquier otra manera, y mientras lo pasemos como tercer argumento, la función sabrá que eso es lo que debe utilizar para dibujar las barras.

Por lo tanto, el nombre del array en sí mismo no es importante, lo que importa es que se le pase un array de números como el tercer argumento de la función dibujarBarra.

Gracias, Ceferino, por tu amplia respuesta! Entiendo que "serie" sea el tercer parámetro; lo que me confunde es que estoy escribiendo "serie[i]" como parámetro, como si fuera un array, salvo que no le estoy pasando el nombre de ese array para que acceda al índice [i].

¿Quiere decir que si a un parámetro le pongo un índice [i], lo va a entender como array?

Disculpá mi ignorancia y de nuevo gracias por la paciencia en explicar!

Java Script es un lenguaje de tipado débil, es decir que no se tiene que especificar explícitamente qué tipo de dato es, a diferencia de otros lenguajes de tipado fuerte donde siempre tienes que especificar el tipo de variable: numerica, string, array, etc.

El programa sabe a cual array te refieres porque lo estás especificando cuando llamas la función

          dibujarBarra(150, 150, **serie2009**, colores, "2009"); //Aquí mandas la serie 2009
          dibujarBarra(500, 150, **serie2019**, colores, "2019"); //Aquí mandas la serie 2019

Mientras que en el contexto de la función tu array ya no tendrá el nombre serie2009 o serie2019 sino el nombre que le especificas en los parámetros que en este caso es serie

          function dibujarBarra(x, y, **serie**, colores, texto){

El orden de los parámetros es importante y debe coincidir el tipo de dato que envías con el tipo de dato que recibes

Mil gracias, Angel, por la explicación! Parece mentira pero con esto de "masticar" el concepto hasta entenderlo, voy avanzando. Lento, pero seguro! como la fabula de la liebre y la tortuga. obviamente que yo vengo a ser la tortuga! jaja! Gracias otra vez por la ayuda!