< Return to Video

Variables Locales y Globales (Versión en Video)

  • 0:01 - 0:12
    Ahora que has dominado los fundamentos de las funciones, quiero hablar de un tema que puede ser un poco complicado: la diferencia entre variables locales y globales.
  • 0:12 - 0:16
    Puede ser que por ahora estos términos no signifiquen nada para ti. Así que empecemos con un ejemplo.
  • 0:16 - 0:21
    Escribí este programa para mostrarte cuántas pulgadas crecí en mi infancia.
  • 0:21 - 0:25
    Dado que los seres humanos crecen a ritmos diferentes, se me ocurrió esta función, "calcInches",
  • 0:25 - 0:30
    donde puedo pasarle una "startAge" (edad inicial), una "endAge" (edad final), y una "inchesPerYear" (pulgadas por año),
  • 0:30 - 0:35
    y luego la función calculará cuántas pulgadas crecí durante ese tiempo.
  • 0:35 - 0:38
    ... y regresará el resultado a quien haya llamado la función.
  • 0:38 - 0:45
    Entonces puedes ver aquí desde 0 hasta 8 años, llamo la función "calcInches" y le paso 0, 8 y 2.5,
  • 0:45 - 0:49
    porque crecí alrededor de 2.5 pulgadas por año.
  • 0:49 - 0:52
    Hace el cálculo y como puedes ver, arroja 20.
  • 0:52 - 0:58
    Luego desde 8 hasta 16, llamo la función y paso 8, 16 y luego 2.
  • 0:58 - 1:02
    Porque no crecí tanto, y puedes ver que arroja un resultado de 16.
  • 1:02 - 1:08
    Esto se ve muy bien pero ahora quiero mostrar en realidad cuántas pulgadas crecí en total en toda mi infancia.
  • 1:08 - 1:17
    Así que ¿cómo hago eso? Bueno podría empezar por mirar mi código y decir mmm..., ¿qué valores tengo aquí?
  • 1:17 - 1:21
    ¿Tengo alguna cosa que parezca representar el total de pulgadas?
  • 1:21 - 1:26
    Bueno, tengo esta variable "totalInches" (pulgadas totales) dentro de mi función "calcInches",
  • 1:26 - 1:31
    Así que podría desplegar eso y ver qué dice; podría empezar por ahí.
  • 1:31 - 1:36
    Digamos entonces "text(totalInches, 10, 200)" y lo ponemos aquí abajo.
  • 1:36 - 1:43
    Muy bien, vamos a ver qué obtenemos con esto. Oh, o-oh, obtuvimos al chico de los ¡Oh no! Y dice que hay un problema.
  • 1:43 - 1:52
    "totalInches" no está definida. Bueno, eso es extraño porque definimos "totalInches" justo aquí, ¿cierto? "var totalInches =".
  • 1:52 - 2:00
    Bueno, el problema es que declaramos "totalInches" dentro de una función. En esta línea de aquí.
  • 2:00 - 2:05
    Y cuando definimos una variable dentro de una función, es considerada como una variable local.
  • 2:05 - 2:10
    Sólo es válida dentro de esta función (calcInches).
  • 2:10 - 2:15
    Y el código que está fuera de la función, todo esto, no ve las variables locales que están dentro de las funciones.
  • 2:15 - 2:19
    Sólo ve lo que le regresan.
  • 2:19 - 2:22
    Sólo ve ese valor, no esa variable.
  • 2:22 - 2:26
    Así que cuando tratamos de usar "totalInches" fuera de la función, el programa no sabe qué es eso,
  • 2:26 - 2:31
    Y dice: "Hey, no he visto esta variable antes. No está definida. No puedo desplegarla."
  • 2:31 - 2:38
    Entonces hay una manera en que podemos hacer que el código que está fuera de la función pueda ver esta variable.
  • 2:38 - 2:43
    Y es cambiando esta variable local en una variable global.
  • 2:43 - 2:50
    Podemos hacer eso moviendo la definición de la variable fuera de la función, en lo que se llama el entorno global.
  • 2:50 - 2:59
    Y ahora, dentro de la función, todo lo que estamos haciendo es cambiar su valor cada vez, no definiéndola ni declarándola.
  • 2:59 - 3:03
    Así que podemos ver que aquí dice "Total grown over life: 16" (Crecimiento total en la vida: 16)
  • 3:03 - 3:07
    Entonces el programa encontró la variable porque la hicimos variable global.
  • 3:07 - 3:10
    Pero este no es el valor que estamos buscando en realidad.
  • 3:10 - 3:12
    Es sólo el valor más reciente.
  • 3:12 - 3:18
    Y eso es porque cada vez que llamamos esta función, se asigna a "totalInches" el último resultado calculado, ¿correcto?
  • 3:18 - 3:22
    Entonces lo que realmente necesitamos hacer es un nueva variable
  • 3:22 - 3:29
    que usemos solamente para almacenar el total que se vaya sumando cada vez que calculamos ... el total para un rango.
  • 3:29 - 3:38
    Así que vamos a cambiar otra vez esta variable para hacerla local, y hacer una nueva variable global que llamaremos "lifeInches".
  • 3:38 - 3:41
    Y la inicializamos en 0.
  • 3:41 - 3:50
    Y luego dentro de la función, sumaremos a esta variable global "lifeInches += totalInches".
  • 3:50 - 3:53
    Así que vamos a sumar lo que calculemos cada vez que llamamos esta función,
  • 3:53 - 3:56
    lo vamos a sumar a la variable global "lifeInches".
  • 3:56 - 4:00
    Y luego en la parte de abajo, desplegaremos la variable lifeInches: "text(lifeInches, 10, 200)".
  • 4:00 - 4:04
    ¡Tan tan! nuestro crecimiento total en la vida.
  • 4:04 - 4:07
    En realidad esta no es mi estatura. Soy más alta que eso.
  • 4:07 - 4:11
    Pero eso es porque cuando nacemos medimos más de 0 pulgadas.
  • 4:11 - 4:13
    Así que si quiero el total, podría comenzar en 20.
  • 4:13 - 4:17
    Y eso es todo, ésta es mi estatura.
  • 4:17 - 4:22
    Muy bien. Revisemos, "totalInches" es lo que llamamos una variable local.
  • 4:22 - 4:27
    Y sabemos eso porque vemos que la declaración de la variable está dentro de la función, y no fuera de la función.
  • 4:27 - 4:33
    Y eso significa que el código que está aquí afuera de la función no reconoce esta variable llamada "totalInches".
  • 4:33 - 4:38
    Ahora, "lifeInches" es lo que llamamos una variable global.
  • 4:38 - 4:43
    Y sabemos eso porque vemos que la declaración de esta variable está fuera de cualquier función, en nuestro entorno global.
  • 4:43 - 4:47
    Así que trata de tener esto en mente cuando escribas tus funciones y tus variables.
  • 4:47 - 4:51
    Y piensa si quieres tener una variable local para usar en una función,
  • 4:51 - 4:55
    o una variable global para usar en todo el programa.
  • 4:55 - 4:58
    Y no te preocupes si te cuesta trabajo.
  • 4:58 - 5:02
    Es uno de los conceptos más difíciles de la programación, en JavaScript en particular.
  • 5:02 - 5:06
    Y es algo que harás mejor mientras más lo practiques.
Title:
Variables Locales y Globales (Versión en Video)
Description:

more » « less
Video Language:
English
Duration:
05:06

Spanish, Mexican subtitles

Revisions