Tu Primer JavaScript
Tu Primer JavaScript
Tu primer JavaScript
Si seleccionas líneas de la transcripción en esta sección, irás a la
marca de tiempo en el vídeo
Vamos a comenzar a trabajar con nuestro primer archivo de JavaScript, para lo
cual es necesario que primero tengamos una página web. Para esto, vamos a
crear una carpeta, en este caso tenemos una creada: 'JavaScript Esencial'. Esta
carpeta simplemente la arrastramos y la dejamos caer en nuestro Visual
Studio Code. Aquí, cada vez que nosotros creemos un archivo,
automáticamente se va almacenar en esta carpeta, así que simplemente vamos
a crearlo dando clic en este botón o vamos a hacer clic derecho y damos en el
botón que dice Nuevo archivo. Vamos a escribir'index. html'. Te preguntarás por
qué necesitamos de un archivo HTML para trabajar con JavaScript. Esto es muy
simple, pues, cuando trabajamos con web necesitamos de HTML para que se
pueda ejecutar JavaScript, puesto que HTML es el punto de entrada para poder
trabajar con este lenguaje. Una vez que tenemos creado nuestro archivo, vamos
a escribir las letras "ht". Con esto, se nos está desplegando un menú emergente
conocido como "intelligence". Esta ventanita emergente me va a ofrecer
algunos "snippets", que simplemente son atajos de código para poder escribir
más rápidamente. Vamos a seleccionar la opción que dice Html5. Una vez que la
seleccionamos, nos aparece ya una base de código, por lo cual no es necesario
tener que escribir todo la primera vez. Vamos a remover la línea número 7,
puesto que, en este caso, todavía no estaremos trabajando con estilos. Al
contrario, vamos a generar una etiqueta llamada'script' para que nosotros
podamos escribir aquí nuestro código de JavaScript. Aquí simplemente vamos a
utilizar una alerta, entre paréntesis y entre comillas, vamos escribir "Hola
Mundo". Con esto, ya tenemos un primer JavaScript generado y simplemente
vamos a guardarlo, y para probarlo vamos a abrir nuestra carpeta y damos clic
en el archivo'index. html'que aparece aquí. Como podemos ver, cuando nuestra
página carga, aquí dice "Hola Mundo". En este caso, entonces, ya contamos
nosotros con nuestra primera aplicación de JavaScript. Sí, este ejercicio es algo
muy sencillo, pero poco a poco estaremos agregándole mejores características.
Contenedores Let
Si seleccionas líneas de la transcripción en esta sección, irás a la
marca de tiempo en el vídeo
Las variables tienen un alcance, o también lo podemos conocer como un
"scope", es decir, el espacio que van a abarcar en su uso. En este caso, yo tengo
una variable llamada'nombre'. Esta variable'nombre' va a alcanzar toda la
aplicación, puesto que es una variable de tipo global. Aquí, en esta
situación, vamos a enviar un'console. log' para mostrar en Consola el contenido
de la variable'nombre'. Una vez que ya lo tengo aquí, actualizo mi pantalla y
vemos como ya me despliega el valor que contiene esta variable
llamada 'nombre'. Si yo me llevo esta variable y hago una nueva asignación, en
este caso dentro de esta estructura que es una función, y vamos a cambiar su
valor, por'yacxf'. Aquí yo cambio dicho valor y cuando lo voy a ejecutar
nuevamente, voy a probar el contenido de la variable, y vemos como tiene un
nuevo contenido. Yo puedo cambiar el alcance y lo puedo delimitar, es
decir, puedo dejar que el contenido de esta variable'nombre' solamente
abarque el contenido de esta función. Y esto lo puedo hacer simplemente
escribiendo nuevamente la palabra'var'. Así que ahora vamos a mostrarla dentro
de este contenido. Una vez que la tenemos aquí, actualizamos la página y
vemos como tengo esto que se está imprimiendo en la línea 5 y el contenido
que se está imprimiendo en la línea 9. Pero ¿qué sucede si yo vuelvo a acceder a
la variable'nombre'? En este caso, nosotros mantenemos el valor
de'Sergio', ¿por qué?, porque estamos viendo que simplemente el valor de esta
variable que existe aquí solamente es válida dentro de la función. Ahora, para
evitar alguna confusión, nosotros podemos cambiar este'var' por la palabra
reservada'let' y aquí estamos utilizando un contenedor de bloque, es decir, un
contenedor que solamente va a abarcar este espacio y va a tener el mismo
objetivo que lo que acabamos de escribir con la palabra'var' pero de una
manera y con una sintaxis más adecuada. Así que ahora actualizamos, vuelvo a
escribir la palabra'nombre' y aquí tengo ahora el valor'Sergio', que es el
mismo. Pero ¿qué sucede, por ejemplo, si yo creo una nueva variable o un
nuevo contenedor? En este caso vamos a crear el contenedor'edad' y aquí
vamos a grabar un número. Vamos a mandarlo a imprimir a Consola, aquí
vamos a escribir el nombre de la variable, que se llama'edad', y actualizamos
nuestra página. Como vemos, aquí me aparece el valor 34, pero ¿qué sucede si
yo invoco el valor de'edad'directamente aquí? Ya no existe dentro de este
contexto, ¿por qué?, porque simplemente lo estoy invocando fuera de la
función y aquí yo ya no me encuentro dentro de la función. Por tanto, podemos
ver que el error me dice que no está definido. Así también, si yo puedo probarlo
mandando el'console. log' fuera de la función, tendremos un error de manera
automática. Vamos a ejecutarlo y aquí se encuentra el error. Esto es porque
estamos definiendo el alcance, así que la manera adecuada, cuando tú quieras
trabajar con variables globales utiliza la palabra reservada'var', y cuando quieras
trabajar con variables de bloque o variables locales dentro de una función o una
estructura de datos puedes utilizar la palabra reservada'let'.
Contenedores Const
Si seleccionas líneas de la transcripción en esta sección, irás a la
marca de tiempo en el vídeo
En JavaScript también podemos utilizar constantes, y estos son contenedores de
datos que no van a permitir que cambie el dato que están almacenando a lo
largo de tu programa, es decir, lo van a tener persistente a lo largo de todo tu
programa mientras este se esté ejecutando. Así que, entonces, nosotros
podemos crear una nueva constante utilizando la palabra reservada'const'. Aquí
vamos a asignar un nombre, podemos trabajar ahora con la palabra'pi' y, por
tanto, guardaremos el valor 3, 1416. A diferencia de una variable, que en ese
caso sí puede cambiar el valor que tiene, para esta situación una constante no
va a permitir que el valor cambie. Vamos a ver primero qué sucede con este
ejemplo. Cuando trabajamos con una constante, en este caso'pi', yo voy a
guardar y voy a probar el contenido. Una vez que actualizo mi navegador,
escribo la palabra'pi', que es el nombre de esta constante, y me ofrece el
valor. Pero ¿qué sucede si yo trato de cambiar su contenido? Por ejemplo, aquí
mismo escribo ahora'pi'es igual a 15. Esto solamente por poner un caso. Vengo
y actualizo mi navegador y automáticamente tengo un error donde me dice que
la asignación a una constante no es posible. Con esto podemos ver que la
constante se está protegiendo. De la misma manera, y en el caso de que yo no
tenga alguna asignación, esto también puede cambiar. Voy a comentar aquí el
valor de'pi' y vamos a hacer la asignación en el momento de ejecución. Por
ejemplo, aquí yo tengo el valor de'pi' y ahora yo trato de hacer una asignación y
voy a poner ahora el valor 13. Cuando lo hago, me arroja el mismo tipo de
error. De esta manera, estamos asegurándonos de que estamos utilizando un
valor que no va a cambiar a lo largo del programa y así podemos evitar malas
asignaciones en nuestro código.
El ciclo do...while
Si seleccionas líneas de la transcripción en esta sección, irás a la
marca de tiempo en el vídeo
El ciclo'do while'no es más que una variante del ciclo'while', solamente hay una
diferencia: dónde nosotros vamos a evaluar la condición. En el caso de'while', lo
primero que hacíamos era preguntar si podíamos ejecutar el conjunto de
acciones. Si la decisión era válida, entonces ejecutábamos. En este caso, con'do
while'lo primero que hacemos es ejecutar las acciones y después preguntar si
podemos continuar ejecutando las acciones. Así que debes tener mucho
cuidado con cuál de los dos ciclos vas a ocupar dependiendo del objetivo que
busques lograr en el flujo de tu aplicación. En este caso, lo primero que vamos a
trabajar será escribir la estructura. Como nosotros podemos ver aquí, la primera
sección que tenemos de un'do while'es la palabra reservada'do' y el conjunto de
acciones. La segunda parte es la palabra reservada'while' y la condición que
deseamos evaluar. En este caso, vamos a estar mostrando en consola la
leyenda'producto vendido' y cada vez que nosotros estemos ejecutando la
acción vamos a disminuir en 1 los productos que tenemos. Por tanto, la primera
vez que lo ejecutemos vamos a necesitar detenerlo en algún momento para
poder revisar paso paso, así que para esto vamos a utilizar el'debugger'de
Google Chrome. En este punto vamos a actualizar nuestro navegador y ejecutar
nuestra aplicación y vamos a mostrar directamente aquí el'debugger'. Si en la
sección de Watch no tenías ningún elemento, puedes agregarlo; si ya te aparece
alguno, solamente elimínalo y agrega el elemento con el cual vamos a estar
trabajando. En este caso, lo que nosotros vamos a usar como referencia es la
variable'productos', así que pulsemos en el símbolo de más para agregar la
expresión, solamente ponemos el nombre de la variable, 'productos', y vemos
que aparece con 4. ¿Por qué? Porque, siguiendo el mismo conjunto de
instrucciones, primero se ejecutó todo esto antes de preguntar la
evaluación. Vamos a ver qué sigue en el siguiente paso. En este caso, primero va
a preguntar: ¿es'productos'mayor o igual que 1? Nosotros podemos colocar el
cursor sobre el nombre de la variable y ves que aparecerá una ventanilla con el
número, en este caso un 4, que es el mismo que estamos observando
aquí. Entonces, ¿es 4 mayor o igual que 1? Sí. Y como esto es correcto, entonces
continuamos ejecutando. En este caso se muestra el mensaje en consola y se
decrementa en 1 el valor. Eso lo puedes identificar porque aquí tenemos 4 y
cuando pasamos por la instrucción de la línea 13 vemos como se decrementa al
valor 3 y regresamos nuevamente a ejecutar la condición. Esto resulta ser
válido, ¿es 3 mayor o igual que 1?, puesto que 3 es el valor que está
almacenado en'productos'. Sí. Como esta condición es válida, entonces
continúa, y así sucesivamente. Así que vamos a ver qué sucede una vez que
terminamos nosotros. Estamos ejecutando esta última acción
donde'productos'vale 1, lo voy a decrementar, ahora vale 0, y vamos a
preguntar en la condición: ¿es'productos'mayor o igual que 1? No, porque
ahora el valor es 0. Por tanto, cuando yo lo ejecuto una última vez, la instrucción
termina. Así, entonces, nosotros podemos ya tener el uso de un ciclo o
estructura de control'do while'donde lo primero que se va a hacer es ejecutar
un conjunto de acciones y después preguntar si se puede continuar o no. Así
que debes tener mucho cuidado en la manera en la que utilizas este tipo de
ciclos.
Inicialización de parámetros
Si seleccionas líneas de la transcripción en esta sección, irás a la
marca de tiempo en el vídeo
Muchas veces nos encontraremos en la situación en que al momento de utilizar
una función no necesitemos enviar valores de un parámetro aunque la
función tenga declarado que va a recibir un parámetro. Es decir, existirán ciertas
circunstancias donde el mismo algoritmo que nosotros hayamos armado pueda
o no recibir un valor. En este caso tenemos una función que se
llama'contar' que, al invocarla, debería recibir un valor'cantidad' y es lo que
estamos mostrando en consola. Cuando nosotros lo probamos en
pantalla, vemos como el valor que tenemos aquí dice: "undefined". ¿Por
qué? Porque al momento de hacer la invocación de la función simplemente no
enviamos nada. Si yo quiero enviar algún valor, escribo en este caso
10, actualizo y listo, dice: "Total: 10". Ya se pasó un dato, pero ¿qué sucede si yo
imperativamente necesito no enviar ningún parámetro? Bueno, para esta
situación puedo yo preinicializar el parámetro que se va a recibir. Es decir, yo
aquí puedo escribir el símbolo de igual y puedo poner un valor, en este
caso vamos a poner un valor 20. ¿Qué quiere decir esto? Que si yo no envío
ningún dato como parámetro al invocar la función, el valor que va a tener por
defecto esta variable cantidad es el valor 20. Pero si yo envío algo, obviamente
va a tomar el valor que nosotros estamos enviando. Vamos a hacer la
prueba. Actualizamos nuestro navegador y vemos como ahora el valor dice:
"Total: 20" porque no enviamos nada. ¿Pero qué sucede si yo envío un
valor? Voy a enviar ahora 100. Actualizo mi navegador y vemos como hace caso
directamente al valor que yo estoy enviando. En resumen, si no enviamos
ningún valor como parámetro, se va a quedar con el valor que tiene
preinicializado, pero si enviamos un valor va a hacer caso al valor que estemos
enviando. Y, de la misma manera, si tú tienes más parámetros que vas a
recibir puedes preinicializar todos los valores que necesites. Esta es una
característica bastante funcional que tiene JavaScript.
Ordenando un arreglo
Si seleccionas líneas de la transcripción en esta sección, irás a la
marca de tiempo en el vídeo
En los arreglos, generalmente, vamos a guardar colecciones grandes de
datos. Estos datos, muchas veces, los vamos a presentar en una tabla o en
pantalla de manera ordenada o de manera desordenada, que esta es una
actividad que debe ir por usabilidad en casi todas las páginas web o
aplicaciones que estén presentando datos. Para hacer esto y cuando trabajes
con un arreglo, podemos utilizar un método llamado'sort'. Este método'sort'me
va a permitir a mí ordenar el arreglo que yo esté necesitando. Por ejemplo, para
poder trabajar con esto lo único que voy a hacer es invocarlo directamente
en'platillos'. entonces yo escribiré'platillos. sort'. Este punto'sort'existe
porque'platillos'es un arreglo. Entonces, quiere decir que todos estos métodos
están disponibles siempre y cuando el tipo de dato sea un arreglo. Para este
caso estamos mandando a imprimir en pantalla el contenido que hay antes y el
contenido que hay después para que podamos detectar el
cambio. Actualizamos nuestro navegador y vemos como ahora tenemos una
diferencia, es decir, esto ya se encuentra ordenado. Antes
teníamos'ceviche', después'tacos'y después'pasta', pero como lo ordena de
manera alfabética, entonces después queda 'ceviche', después sigue'pasta'y
después'tacos', porque'tacos'comienza con te y es una letra que va después de
la pe en el alfabeto. También, yo puedo ordenarlos al contrario. ¿Qué significa
esto? Yo voy a utilizar un método llamado'reverse'. Cuando yo invoco este
método no significa que me va a ordenar al revés, lo que significa es que a
como está el arreglo lo va a enviar pero al contrario. Vamos a revisar
rápidamente los dos casos. En este caso, primero el arreglo está ordenado y
después aplicamos el método'reverse'. Actualizamos el navegador y vemos
como al principio tenemos'ceviche', 'tacos', 'pasta'. Después lo tenemos
ordenado, y para esto vamos a mandarlo a consola y así podremos ver qué
sucede cuando esto está ordenado. Actualizamos nuevamente el navegador y
podremos revisar. Antes teníamos'ceviche', 'tacos'y'pasta'. Después, ordenamos
el contenido y, al estar ordenado, tenemos'ceviche', 'pasta'y'tacos'. Y después, lo
que tenemos es el método'reverse', y este método'reverse'lo que me va a
permitir hacer es contarlo al revés, es decir, tendremos'tacos'al inicio, 'pasta'se
mantiene en su posición y'ceviche'al final. Y si, por alguna razón, tú deseas
aplicar nuevamente el método'reverse', ¿qué va a suceder? Cuando lo aplicamos
y actualizamos el navegador vemos como tenemos esta "reversa" de nuevo y
tenemos ahora'ceviche', 'pasta', y'tacos'al final. Lo único que debes mantener es
una lógica cuando estás trabajando con este tipo de ordenamientos o con este
tipo de acomodado de datos. Estos métodos te van a facilitar mucho el trabajo
cuando tengas que presentar tu información en pantalla.
Desestructuración de arreglos
Si seleccionas líneas de la transcripción en esta sección, irás a la
marca de tiempo en el vídeo
Con los arreglos en JavaScript, también podemos trabajar con algo
llamado desestructura o desestructuración de arreglos. ¿Esto qué es? Es como
una asignación a la inversa. Vamos a analizarlo rápidamente. Aquí, en pantalla,
tú podrás encontrar que tenemos un arreglo llamado'platillos'. Tenemos tres
variables: 'platillo 1', 'platillo 2'y'platillo 3'. A cada una de estas variables
estamos asignando cada una de las posiciones del arreglo'platillos': 'platillos'en
la posición 0, en la posición 1 y en la posición 2, y posteriormente los estamos
enviando a pantalla. Cuando los mandamos en pantalla, tenemos los tres
elementos, que es: 'ceviche', 'tacos'y'pasta'. Ahora, esta asignación puede ser un
tanto compleja. Entonces, ¿qué vamos a hacer? Primero, voy a comentar todos
estos elementos y, una vez que ya están comentados, yo voy a trabajar
generando primero tres variables, las mismas variables que teníamos pero sin
ningún dato, y ahora voy a trabajar con este proceso de desestructuración. Lo
primero que voy a hacer es utilizar la sintaxis del arreglo. Sí, no la estamos
asignando a ningún lugar, solamente estamos escribiendo los corchetes. Y aquí
vamos escribir los nombres de las tres variables: 'platillo 1', 'platillo 2' y'platillo
3'. Y después, siguiendo la sintaxis de la desestructuración de arreglos, vamos a
escribir el símbolo igual. Espera, ¿igual?, ¿a un arreglo le vamos a asignar
algo?, ¿cómo funciona esto? Esta sintaxis está muy rara, pero tiene mucha lógica
cuando hablamos de este tema. Aquí vamos a asignar la
variable'platillos'. Entonces, si estás de acuerdo, esto que tenemos aquí en
pantalla no debería cambiar. Actualizamos nuestro navegador y vemos como,
efectivamente, mantenemos el contenido. De hecho, si yo agrego aquí un
elemento más, por ejemplo, 'tostadas', y voy a crear una variable nueva y a esta
le voy a poner de nombre 'platillo 4', y aquí simplemente voy a hacer la
referencia, 'platillo 4'. Esto mismo lo voy a mandar a imprimir y, una vez que lo
mando a imprimir, actualizamos el navegador y, listo, tenemos esto. ¿Qué
sucede con la desestructuración? Lo que pasa es que cuando estamos
asignando utilizando esta sintaxis, por dentro el motor de Javascript toma el
contenido que hay dentro de esta variable, la identifica como un arreglo y, al
identificarla, empieza a hacer la asignación uno a uno, es decir, la posición 0 en
el primer elemento que yo mandé, es decir, en la posición 0. Uno a uno, dos a
dos, tres a tres. Entonces, este tipo de asignaciones es bastante sencillo ahora y,
de hecho, podemos agregar un nivel de simplicidad más. ¿Y este cuál es? Voy a
comentar todas estas variables, voy a guardar y actualizar mi
navegador. Cuando yo lo hago, me genera un error y me dice'platillo 1'no está
definido. Esto sucede porque estamos trabajando con el modo'use strict'. Pero
lo que podemos hacer es que al inicio escribimos la
palabra reservada'var'. Ahora sí, actualizamos el navegador y todo vuelve a
funcionar correctamente. Dime, ¿qué tipo de sintaxis prefieres?, ¿esta donde
tenemos que estar asignando cada una o estar declarando cada variable?, ¿o
simplemente hacer este proceso de desestructuración? Creo que esto es
bastante sencillo y te ayudará a agilizar tu proceso de generación de código.