Upload via hfc (batch)
Browse filesUploaded using hfc tool
This view is limited to 50 files because it contains too many changes.
See raw diff
- .gitattributes +11 -0
- subir/Curso de Fundamentos de JavaScript/02-Estructuras de Control y Lógica/09-Lecturas recomendadas.txt +1 -0
- subir/Curso de Fundamentos de JavaScript/02-Estructuras de Control y Lógica/09-Resumen.html +0 -0
- subir/Curso de Fundamentos de JavaScript/02-Estructuras de Control y Lógica/09-Uso del ciclo while para iteración en programación.mp4 +3 -0
- subir/Curso de Fundamentos de JavaScript/02-Estructuras de Control y Lógica/09-Uso del ciclo while para iteración en programación.vtt +302 -0
- subir/Curso de Fundamentos de JavaScript/02-Estructuras de Control y Lógica/09-index_d7170355-2163-4a7d-9633-bc5247dbcfd1.js +12 -0
- subir/Curso de Fundamentos de JavaScript/02-Estructuras de Control y Lógica/10-Ciclos doWhile Estructura y Diferencias con While.mp4 +3 -0
- subir/Curso de Fundamentos de JavaScript/02-Estructuras de Control y Lógica/10-Ciclos doWhile Estructura y Diferencias con While.vtt +206 -0
- subir/Curso de Fundamentos de JavaScript/02-Estructuras de Control y Lógica/10-Lecturas recomendadas.txt +1 -0
- subir/Curso de Fundamentos de JavaScript/02-Estructuras de Control y Lógica/10-Resumen.html +0 -0
- subir/Curso de Fundamentos de JavaScript/02-Estructuras de Control y Lógica/10-index_4e2b15d9-94de-49f9-bb60-c70238a85a25.js +14 -0
- subir/Curso de Fundamentos de JavaScript/03-Funciones y This/01-Funciones en JavaScript Cómo Calcular Precios con Descuentos.mp4 +3 -0
- subir/Curso de Fundamentos de JavaScript/03-Funciones y This/01-Lecturas recomendadas.txt +1 -0
- subir/Curso de Fundamentos de JavaScript/03-Funciones y This/01-Resumen.html +0 -0
- subir/Curso de Fundamentos de JavaScript/03-Funciones y This/01-clase-anatomia-de-una-funcion_ebd815d1-e594-4489-b4f8-47db59cdccb7.js +14 -0
- subir/Curso de Fundamentos de JavaScript/03-Funciones y This/02-Diferencias entre Funciones y Métodos en JavaScript.mp4 +3 -0
- subir/Curso de Fundamentos de JavaScript/03-Funciones y This/02-Diferencias entre Funciones y Métodos en JavaScript.vtt +815 -0
- subir/Curso de Fundamentos de JavaScript/03-Funciones y This/02-Lecturas recomendadas.txt +1 -0
- subir/Curso de Fundamentos de JavaScript/03-Funciones y This/02-Resumen.html +0 -0
- subir/Curso de Fundamentos de JavaScript/03-Funciones y This/02-clase-funciones-vs-metodos_ae2120c7-56da-4567-8adb-ad30c110a238.js +48 -0
- subir/Curso de Fundamentos de JavaScript/03-Funciones y This/03-Funciones Puras e Impuras en Programación Conceptos y Ejemplos.mp4 +3 -0
- subir/Curso de Fundamentos de JavaScript/03-Funciones y This/03-Funciones Puras e Impuras en Programación Conceptos y Ejemplos.vtt +843 -0
- subir/Curso de Fundamentos de JavaScript/03-Funciones y This/03-Lecturas recomendadas.txt +1 -0
- subir/Curso de Fundamentos de JavaScript/03-Funciones y This/03-Resumen.html +0 -0
- subir/Curso de Fundamentos de JavaScript/03-Funciones y This/03-clase-funciones-puras-e-impuras_e3c125f1-5bce-4b8b-a394-31d35f63fa55.js +41 -0
- subir/Curso de Fundamentos de JavaScript/03-Funciones y This/04-Arrow Functions y Enlace Léxico en JavaScript.mp4 +3 -0
- subir/Curso de Fundamentos de JavaScript/03-Funciones y This/04-Arrow Functions y Enlace Léxico en JavaScript.vtt +878 -0
- subir/Curso de Fundamentos de JavaScript/03-Funciones y This/04-Lecturas recomendadas.txt +1 -0
- subir/Curso de Fundamentos de JavaScript/03-Funciones y This/04-Resumen.html +0 -0
- subir/Curso de Fundamentos de JavaScript/03-Funciones y This/04-clase-arrow-functions_7e661920-826a-43c9-97cf-d5d67e3de5ea.js +29 -0
- subir/Curso de Fundamentos de JavaScript/03-Funciones y This/05-Lecturas recomendadas.txt +1 -0
- subir/Curso de Fundamentos de JavaScript/03-Funciones y This/05-Resumen.html +0 -0
- subir/Curso de Fundamentos de JavaScript/03-Funciones y This/05-Scope y Contextos de Ejecución en JavaScript.mp4 +3 -0
- subir/Curso de Fundamentos de JavaScript/03-Funciones y This/05-Scope y Contextos de Ejecución en JavaScript.vtt +1070 -0
- subir/Curso de Fundamentos de JavaScript/03-Funciones y This/06-Closures y Ámbito Léxico en JavaScript.mp4 +3 -0
- subir/Curso de Fundamentos de JavaScript/03-Funciones y This/06-Closures y Ámbito Léxico en JavaScript.vtt +324 -0
- subir/Curso de Fundamentos de JavaScript/03-Funciones y This/06-Lecturas recomendadas.txt +1 -0
- subir/Curso de Fundamentos de JavaScript/03-Funciones y This/06-Resumen.html +0 -0
- subir/Curso de Fundamentos de JavaScript/03-Funciones y This/06-clase-closures_ca9f5104-7c66-4fa3-9401-38f3ef032eef.js +53 -0
- subir/Curso de Fundamentos de JavaScript/03-Funciones y This/07-Fundamentos del Desarrollo Web Frontend y Backend.mp4 +3 -0
- subir/Curso de Fundamentos de JavaScript/03-Funciones y This/07-Fundamentos del Desarrollo Web Frontend y Backend.vtt +197 -0
- subir/Curso de Fundamentos de JavaScript/03-Funciones y This/07-Lecturas recomendadas.txt +1 -0
- subir/Curso de Fundamentos de JavaScript/03-Funciones y This/07-Resumen.html +0 -0
- subir/Curso de Fundamentos de JavaScript/04-Manipulación de Arrays/01-Arrays Propiedades Acceso y Creación en Programación.mp4 +3 -0
- subir/Curso de Fundamentos de JavaScript/04-Manipulación de Arrays/01-Arrays Propiedades Acceso y Creación en Programación.vtt +629 -0
- subir/Curso de Fundamentos de JavaScript/04-Manipulación de Arrays/01-Lecturas recomendadas.txt +1 -0
- subir/Curso de Fundamentos de JavaScript/04-Manipulación de Arrays/01-Resumen.html +0 -0
- subir/Curso de Fundamentos de JavaScript/04-Manipulación de Arrays/01-clase-introduccion-arrays_e21fb09f-1ffe-42e2-8535-ee8181c2f83c.js +71 -0
- subir/Curso de Fundamentos de JavaScript/04-Manipulación de Arrays/02-Mutabilidad e inmutabilidad en arrays conceptos y ejemplos prácticos.mp4 +3 -0
- subir/Curso de Fundamentos de JavaScript/04-Manipulación de Arrays/02-Mutabilidad e inmutabilidad en arrays conceptos y ejemplos prácticos.vtt +594 -0
.gitattributes
CHANGED
|
@@ -196,3 +196,14 @@ subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript
|
|
| 196 |
subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/02-Estructuras[[:space:]]de[[:space:]]Control[[:space:]]y[[:space:]]Lógica/06-Ciclo[[:space:]]For[[:space:]]Iteración[[:space:]]de[[:space:]]Listas[[:space:]]y[[:space:]]Uso[[:space:]]de[[:space:]]Consolelog[[:space:]]en[[:space:]]JavaScript.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 197 |
subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/02-Estructuras[[:space:]]de[[:space:]]Control[[:space:]]y[[:space:]]Lógica/07-Iteración[[:space:]]con[[:space:]]forof[[:space:]]en[[:space:]]JavaScript[[:space:]]para[[:space:]]arrays[[:space:]]y[[:space:]]strings.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 198 |
subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/02-Estructuras[[:space:]]de[[:space:]]Control[[:space:]]y[[:space:]]Lógica/08-Iteración[[:space:]]sobre[[:space:]]Objetos[[:space:]]con[[:space:]]forIn[[:space:]]en[[:space:]]JavaScript.mp4 filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 196 |
subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/02-Estructuras[[:space:]]de[[:space:]]Control[[:space:]]y[[:space:]]Lógica/06-Ciclo[[:space:]]For[[:space:]]Iteración[[:space:]]de[[:space:]]Listas[[:space:]]y[[:space:]]Uso[[:space:]]de[[:space:]]Consolelog[[:space:]]en[[:space:]]JavaScript.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 197 |
subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/02-Estructuras[[:space:]]de[[:space:]]Control[[:space:]]y[[:space:]]Lógica/07-Iteración[[:space:]]con[[:space:]]forof[[:space:]]en[[:space:]]JavaScript[[:space:]]para[[:space:]]arrays[[:space:]]y[[:space:]]strings.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 198 |
subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/02-Estructuras[[:space:]]de[[:space:]]Control[[:space:]]y[[:space:]]Lógica/08-Iteración[[:space:]]sobre[[:space:]]Objetos[[:space:]]con[[:space:]]forIn[[:space:]]en[[:space:]]JavaScript.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 199 |
+
subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/02-Estructuras[[:space:]]de[[:space:]]Control[[:space:]]y[[:space:]]Lógica/09-Uso[[:space:]]del[[:space:]]ciclo[[:space:]]while[[:space:]]para[[:space:]]iteración[[:space:]]en[[:space:]]programación.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 200 |
+
subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/02-Estructuras[[:space:]]de[[:space:]]Control[[:space:]]y[[:space:]]Lógica/10-Ciclos[[:space:]]doWhile[[:space:]]Estructura[[:space:]]y[[:space:]]Diferencias[[:space:]]con[[:space:]]While.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 201 |
+
subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/03-Funciones[[:space:]]y[[:space:]]This/01-Funciones[[:space:]]en[[:space:]]JavaScript[[:space:]]Cómo[[:space:]]Calcular[[:space:]]Precios[[:space:]]con[[:space:]]Descuentos.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 202 |
+
subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/03-Funciones[[:space:]]y[[:space:]]This/02-Diferencias[[:space:]]entre[[:space:]]Funciones[[:space:]]y[[:space:]]Métodos[[:space:]]en[[:space:]]JavaScript.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 203 |
+
subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/03-Funciones[[:space:]]y[[:space:]]This/03-Funciones[[:space:]]Puras[[:space:]]e[[:space:]]Impuras[[:space:]]en[[:space:]]Programación[[:space:]]Conceptos[[:space:]]y[[:space:]]Ejemplos.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 204 |
+
subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/03-Funciones[[:space:]]y[[:space:]]This/04-Arrow[[:space:]]Functions[[:space:]]y[[:space:]]Enlace[[:space:]]Léxico[[:space:]]en[[:space:]]JavaScript.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 205 |
+
subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/03-Funciones[[:space:]]y[[:space:]]This/05-Scope[[:space:]]y[[:space:]]Contextos[[:space:]]de[[:space:]]Ejecución[[:space:]]en[[:space:]]JavaScript.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 206 |
+
subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/03-Funciones[[:space:]]y[[:space:]]This/06-Closures[[:space:]]y[[:space:]]Ámbito[[:space:]]Léxico[[:space:]]en[[:space:]]JavaScript.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 207 |
+
subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/03-Funciones[[:space:]]y[[:space:]]This/07-Fundamentos[[:space:]]del[[:space:]]Desarrollo[[:space:]]Web[[:space:]]Frontend[[:space:]]y[[:space:]]Backend.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 208 |
+
subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/04-Manipulación[[:space:]]de[[:space:]]Arrays/01-Arrays[[:space:]]Propiedades[[:space:]]Acceso[[:space:]]y[[:space:]]Creación[[:space:]]en[[:space:]]Programación.mp4 filter=lfs diff=lfs merge=lfs -text
|
| 209 |
+
subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/04-Manipulación[[:space:]]de[[:space:]]Arrays/02-Mutabilidad[[:space:]]e[[:space:]]inmutabilidad[[:space:]]en[[:space:]]arrays[[:space:]]conceptos[[:space:]]y[[:space:]]ejemplos[[:space:]]prácticos.mp4 filter=lfs diff=lfs merge=lfs -text
|
subir/Curso de Fundamentos de JavaScript/02-Estructuras de Control y Lógica/09-Lecturas recomendadas.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://github.com/platzi/basico-js
|
subir/Curso de Fundamentos de JavaScript/02-Estructuras de Control y Lógica/09-Resumen.html
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
subir/Curso de Fundamentos de JavaScript/02-Estructuras de Control y Lógica/09-Uso del ciclo while para iteración en programación.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:639e7bce49fa97cb0f5e3d34ddcd0ebce1763a0aa5be4dd3739adc3af26dcc47
|
| 3 |
+
size 22379041
|
subir/Curso de Fundamentos de JavaScript/02-Estructuras de Control y Lógica/09-Uso del ciclo while para iteración en programación.vtt
ADDED
|
@@ -0,0 +1,302 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:00.000 --> 00:02.760
|
| 4 |
+
Vamos a ver ahora un nuevo método, que es
|
| 5 |
+
el método while,
|
| 6 |
+
|
| 7 |
+
00:02.760 --> 00:05.460
|
| 8 |
+
que este método también lo vamos a
|
| 9 |
+
utilizar para poder iterar.
|
| 10 |
+
|
| 11 |
+
00:05.460 --> 00:08.860
|
| 12 |
+
Quiere decir, para poder meter
|
| 13 |
+
instrucciones en un ciclo
|
| 14 |
+
|
| 15 |
+
00:08.860 --> 00:12.200
|
| 16 |
+
y que se vayan repitiendo siempre y cuando
|
| 17 |
+
sea true
|
| 18 |
+
|
| 19 |
+
00:12.200 --> 00:14.400
|
| 20 |
+
la condición que tenemos ahí dentro de while.
|
| 21 |
+
|
| 22 |
+
00:14.400 --> 00:16.700
|
| 23 |
+
Vamos a ver su
|
| 24 |
+
estructura.
|
| 25 |
+
|
| 26 |
+
00:16.700 --> 00:21.800
|
| 27 |
+
While, vamos a poner aquí para poder hacer
|
| 28 |
+
comentarios,
|
| 29 |
+
|
| 30 |
+
00:21.800 --> 00:24.800
|
| 31 |
+
tener espacio para poder
|
| 32 |
+
escribir.
|
| 33 |
+
|
| 34 |
+
00:24.800 --> 00:26.300
|
| 35 |
+
While es un
|
| 36 |
+
ciclo,
|
| 37 |
+
|
| 38 |
+
00:26.300 --> 00:29.660
|
| 39 |
+
el cual nosotros vamos a utilizar para
|
| 40 |
+
poder iterar.
|
| 41 |
+
|
| 42 |
+
00:29.660 --> 00:33.060
|
| 43 |
+
Este ciclo lo que va a hacer es que nos va
|
| 44 |
+
a meter prácticamente
|
| 45 |
+
|
| 46 |
+
00:33.060 --> 00:36.160
|
| 47 |
+
en un loop que se va a estar repitiendo
|
| 48 |
+
las cosas
|
| 49 |
+
|
| 50 |
+
00:36.160 --> 00:41.260
|
| 51 |
+
siempre y cuando la instrucción que esté
|
| 52 |
+
aquí adentro sea verídica.
|
| 53 |
+
|
| 54 |
+
00:41.260 --> 00:43.160
|
| 55 |
+
En el momento en el que deje de ser verídica,
|
| 56 |
+
|
| 57 |
+
00:43.160 --> 00:45.000
|
| 58 |
+
este ciclo se va a
|
| 59 |
+
romper.
|
| 60 |
+
|
| 61 |
+
00:45.000 --> 00:46.600
|
| 62 |
+
Y nosotros vamos a tener como
|
| 63 |
+
resultado
|
| 64 |
+
|
| 65 |
+
00:46.600 --> 00:49.100
|
| 66 |
+
prácticamente el código que tengamos adentro.
|
| 67 |
+
|
| 68 |
+
00:49.100 --> 00:52.260
|
| 69 |
+
La estructura de while es prácticamente,
|
| 70 |
+
|
| 71 |
+
00:52.260 --> 00:54.260
|
| 72 |
+
ponemos while como palabra reservada,
|
| 73 |
+
|
| 74 |
+
00:54.260 --> 00:57.660
|
| 75 |
+
adentro ponemos cuál va a ser la
|
| 76 |
+
condición
|
| 77 |
+
|
| 78 |
+
00:57.660 --> 01:00.000
|
| 79 |
+
que nosotros estamos
|
| 80 |
+
utilizando.
|
| 81 |
+
|
| 82 |
+
01:00.000 --> 01:02.860
|
| 83 |
+
Y mientras esta condición sea verdad,
|
| 84 |
+
|
| 85 |
+
01:02.860 --> 01:07.000
|
| 86 |
+
entonces se va a ejecutar el código que
|
| 87 |
+
tenemos aquí adentro.
|
| 88 |
+
|
| 89 |
+
01:07.000 --> 01:10.060
|
| 90 |
+
Aquí es importante porque si no manejamos
|
| 91 |
+
bien while,
|
| 92 |
+
|
| 93 |
+
01:10.060 --> 01:12.200
|
| 94 |
+
podemos entrar en un loop
|
| 95 |
+
infinito
|
| 96 |
+
|
| 97 |
+
01:12.200 --> 01:16.100
|
| 98 |
+
y quiere decir que todo este código se va
|
| 99 |
+
a repetir de manera infinita.
|
| 100 |
+
|
| 101 |
+
01:16.100 --> 01:17.460
|
| 102 |
+
Si lo estamos haciendo en el navegador,
|
| 103 |
+
|
| 104 |
+
01:17.460 --> 01:20.200
|
| 105 |
+
puede ser incluso que la pantalla de
|
| 106 |
+
nuestro navegador
|
| 107 |
+
|
| 108 |
+
01:20.200 --> 01:24.000
|
| 109 |
+
o la pestaña de nuestro navegador se coma
|
| 110 |
+
toda la memoria RAM
|
| 111 |
+
|
| 112 |
+
01:24.000 --> 01:26.560
|
| 113 |
+
y nuestro navegador prácticamente deje de
|
| 114 |
+
funcionar.
|
| 115 |
+
|
| 116 |
+
01:26.560 --> 01:30.300
|
| 117 |
+
Así que tenemos que tener cuidado con la
|
| 118 |
+
condición que tenemos aquí.
|
| 119 |
+
|
| 120 |
+
01:30.300 --> 01:33.560
|
| 121 |
+
Esta es la estructura básica del método while.
|
| 122 |
+
|
| 123 |
+
01:33.560 --> 01:36.360
|
| 124 |
+
Y es prácticamente así de
|
| 125 |
+
sencilla.
|
| 126 |
+
|
| 127 |
+
01:36.360 --> 01:37.860
|
| 128 |
+
Vamos a pasar ahorita a un
|
| 129 |
+
ejemplo
|
| 130 |
+
|
| 131 |
+
01:37.860 --> 01:41.460
|
| 132 |
+
de cómo utilizaríamos while en algo práctico.
|
| 133 |
+
|
| 134 |
+
01:41.460 --> 01:44.300
|
| 135 |
+
Lo primero que tenemos que hacer es
|
| 136 |
+
generamos una variable
|
| 137 |
+
|
| 138 |
+
01:44.300 --> 01:49.660
|
| 139 |
+
que se va a convertir, por ejemplo, en un
|
| 140 |
+
contador.
|
| 141 |
+
|
| 142 |
+
01:49.660 --> 01:52.700
|
| 143 |
+
Este contador de momento va a ser igual a
|
| 144 |
+
cero.
|
| 145 |
+
|
| 146 |
+
01:52.700 --> 01:56.000
|
| 147 |
+
Este contador es lo que vamos nosotros a
|
| 148 |
+
meter a la condición
|
| 149 |
+
|
| 150 |
+
01:56.000 --> 01:58.260
|
| 151 |
+
para que vaya
|
| 152 |
+
incrementando
|
| 153 |
+
|
| 154 |
+
01:58.260 --> 02:00.660
|
| 155 |
+
y llegue prácticamente a lo que estamos
|
| 156 |
+
buscando
|
| 157 |
+
|
| 158 |
+
02:00.660 --> 02:02.800
|
| 159 |
+
dentro de la misma
|
| 160 |
+
condición.
|
| 161 |
+
|
| 162 |
+
02:02.800 --> 02:04.800
|
| 163 |
+
Aquí entonces utilizamos
|
| 164 |
+
while
|
| 165 |
+
|
| 166 |
+
02:04.800 --> 02:08.900
|
| 167 |
+
y adentro ponemos cuál es la condición.
|
| 168 |
+
|
| 169 |
+
02:08.900 --> 02:15.200
|
| 170 |
+
Mientras contador sea menor a
|
| 171 |
+
10,
|
| 172 |
+
|
| 173 |
+
02:15.200 --> 02:21.660
|
| 174 |
+
entonces nosotros podemos aquí tener de
|
| 175 |
+
momento un console.log
|
| 176 |
+
|
| 177 |
+
02:21.660 --> 02:28.560
|
| 178 |
+
para que me imprima contador en el navegador.
|
| 179 |
+
|
| 180 |
+
02:28.560 --> 02:32.060
|
| 181 |
+
Y es importante aquí poder tener, por ejemplo,
|
| 182 |
+
|
| 183 |
+
02:32.060 --> 02:38.200
|
| 184 |
+
que una vez que se termine esto, contador++,
|
| 185 |
+
|
| 186 |
+
02:38.200 --> 02:40.660
|
| 187 |
+
porque tiene que empezar a incrementar.
|
| 188 |
+
|
| 189 |
+
02:40.660 --> 02:42.300
|
| 190 |
+
Entonces vamos a
|
| 191 |
+
repasar.
|
| 192 |
+
|
| 193 |
+
02:42.300 --> 02:45.700
|
| 194 |
+
Tenemos una variable let que se llama
|
| 195 |
+
contador,
|
| 196 |
+
|
| 197 |
+
02:45.700 --> 02:47.260
|
| 198 |
+
que es igual a
|
| 199 |
+
cero.
|
| 200 |
+
|
| 201 |
+
02:47.260 --> 02:49.660
|
| 202 |
+
Mientras, entonces, estamos en while,
|
| 203 |
+
|
| 204 |
+
02:49.660 --> 02:53.960
|
| 205 |
+
el ciclo que queremos hacer es mientras
|
| 206 |
+
contador sea menor a 10,
|
| 207 |
+
|
| 208 |
+
02:53.960 --> 02:56.560
|
| 209 |
+
entonces imprímeme en la
|
| 210 |
+
consola
|
| 211 |
+
|
| 212 |
+
02:56.560 --> 02:58.960
|
| 213 |
+
el número que tiene contador en ese momento.
|
| 214 |
+
|
| 215 |
+
02:58.960 --> 03:00.960
|
| 216 |
+
Una vez que esta línea se
|
| 217 |
+
ejecute,
|
| 218 |
+
|
| 219 |
+
03:00.960 --> 03:02.560
|
| 220 |
+
contador tiene que
|
| 221 |
+
incrementar.
|
| 222 |
+
|
| 223 |
+
03:02.560 --> 03:05.620
|
| 224 |
+
¿Para qué? Para que en el siguiente loop,
|
| 225 |
+
|
| 226 |
+
03:05.620 --> 03:08.100
|
| 227 |
+
contador ahora ya no es cero, ahora es uno,
|
| 228 |
+
|
| 229 |
+
03:08.100 --> 03:10.160
|
| 230 |
+
pero uno sigue siendo menor a
|
| 231 |
+
10.
|
| 232 |
+
|
| 233 |
+
03:10.160 --> 03:13.320
|
| 234 |
+
Esto se va a romper hasta que contador
|
| 235 |
+
llegue a 10
|
| 236 |
+
|
| 237 |
+
03:13.320 --> 03:16.420
|
| 238 |
+
y cuando es contador es menor a 10, no.
|
| 239 |
+
|
| 240 |
+
03:16.420 --> 03:18.320
|
| 241 |
+
Entonces en este momento se va a generar
|
| 242 |
+
un break
|
| 243 |
+
|
| 244 |
+
03:18.320 --> 03:21.200
|
| 245 |
+
y se va a romper este loop y se va a dejar
|
| 246 |
+
de imprimir
|
| 247 |
+
|
| 248 |
+
03:21.200 --> 03:24.800
|
| 249 |
+
lo que es el valor de contador
|
| 250 |
+
prácticamente en la consola.
|
| 251 |
+
|
| 252 |
+
03:24.800 --> 03:26.360
|
| 253 |
+
Si se nos olvida
|
| 254 |
+
esto,
|
| 255 |
+
|
| 256 |
+
03:26.360 --> 03:28.220
|
| 257 |
+
contador siempre va a ser menor a
|
| 258 |
+
10
|
| 259 |
+
|
| 260 |
+
03:28.220 --> 03:30.960
|
| 261 |
+
y aquí es donde podemos entrar en un loop
|
| 262 |
+
infinito
|
| 263 |
+
|
| 264 |
+
03:30.960 --> 03:33.700
|
| 265 |
+
que va a llevar a la memoria
|
| 266 |
+
prácticamente
|
| 267 |
+
|
| 268 |
+
03:33.700 --> 03:36.300
|
| 269 |
+
de nuestro navegador a
|
| 270 |
+
crashear.
|
| 271 |
+
|
| 272 |
+
03:36.300 --> 03:39.260
|
| 273 |
+
Se dan cuenta, ahorita ya se imprimieron 10.
|
| 274 |
+
|
| 275 |
+
03:39.260 --> 03:40.720
|
| 276 |
+
Es como, Diego, llegaron a
|
| 277 |
+
9.
|
| 278 |
+
|
| 279 |
+
03:40.720 --> 03:43.660
|
| 280 |
+
Sí, porque estamos del cero al
|
| 281 |
+
nueve
|
| 282 |
+
|
| 283 |
+
03:43.660 --> 03:45.760
|
| 284 |
+
y el 10 no es menor al
|
| 285 |
+
10.
|
| 286 |
+
|
| 287 |
+
03:45.760 --> 03:47.660
|
| 288 |
+
Entonces prácticamente aquí nos
|
| 289 |
+
imprime
|
| 290 |
+
|
| 291 |
+
03:47.660 --> 03:51.360
|
| 292 |
+
lo que es verdad en esta
|
| 293 |
+
condición
|
| 294 |
+
|
| 295 |
+
03:51.360 --> 03:54.360
|
| 296 |
+
que hace que While nos imprima
|
| 297 |
+
contador
|
| 298 |
+
|
| 299 |
+
03:54.360 --> 04:19.360
|
| 300 |
+
10 veces del cero al
|
| 301 |
+
nueve.
|
| 302 |
+
|
subir/Curso de Fundamentos de JavaScript/02-Estructuras de Control y Lógica/09-index_d7170355-2163-4a7d-9633-bc5247dbcfd1.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/*
|
| 2 |
+
while(condicion) {
|
| 3 |
+
código
|
| 4 |
+
}
|
| 5 |
+
*/
|
| 6 |
+
|
| 7 |
+
let contador = 0;
|
| 8 |
+
|
| 9 |
+
while (contador < 10) {
|
| 10 |
+
console.log(contador);
|
| 11 |
+
contador++;
|
| 12 |
+
}
|
subir/Curso de Fundamentos de JavaScript/02-Estructuras de Control y Lógica/10-Ciclos doWhile Estructura y Diferencias con While.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:f8783ee64c15baf1b64557f70db3d6248c177cf7a1564a51ac54967ad8885158
|
| 3 |
+
size 22005040
|
subir/Curso de Fundamentos de JavaScript/02-Estructuras de Control y Lógica/10-Ciclos doWhile Estructura y Diferencias con While.vtt
ADDED
|
@@ -0,0 +1,206 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:00.000 --> 00:03.000
|
| 4 |
+
Vamos a ver ahora un método que se llama
|
| 5 |
+
doWhile.
|
| 6 |
+
|
| 7 |
+
00:03.000 --> 00:06.000
|
| 8 |
+
Este método también nos va a ayudar para
|
| 9 |
+
poder hacer ciclos,
|
| 10 |
+
|
| 11 |
+
00:06.000 --> 00:08.500
|
| 12 |
+
que es asegurar que las cosas se vayan
|
| 13 |
+
repitiendo
|
| 14 |
+
|
| 15 |
+
00:08.500 --> 00:11.000
|
| 16 |
+
hasta que logremos el resultado que
|
| 17 |
+
estamos buscando,
|
| 18 |
+
|
| 19 |
+
00:11.000 --> 00:13.000
|
| 20 |
+
siempre y cuando la condición se vaya
|
| 21 |
+
cumpliendo.
|
| 22 |
+
|
| 23 |
+
00:13.000 --> 00:15.500
|
| 24 |
+
Es algo similar a while, pero ahorita
|
| 25 |
+
vamos a explicar
|
| 26 |
+
|
| 27 |
+
00:15.500 --> 00:17.500
|
| 28 |
+
cuáles son las diferencias entre ambos,
|
| 29 |
+
|
| 30 |
+
00:17.500 --> 00:20.000
|
| 31 |
+
pero de inicio vamos a ver cómo
|
| 32 |
+
construimos un doWhile.
|
| 33 |
+
|
| 34 |
+
00:21.000 --> 00:23.000
|
| 35 |
+
Ya que estamos aquí en nuestro código,
|
| 36 |
+
|
| 37 |
+
00:23.000 --> 00:25.000
|
| 38 |
+
antes de ver un
|
| 39 |
+
ejemplo,
|
| 40 |
+
|
| 41 |
+
00:25.000 --> 00:29.000
|
| 42 |
+
vamos a poner aquí comentarios para poder
|
| 43 |
+
hacer notas.
|
| 44 |
+
|
| 45 |
+
00:29.000 --> 00:32.000
|
| 46 |
+
Y vamos a ver cuál es la estructura que
|
| 47 |
+
utilizamos en un doWhile.
|
| 48 |
+
|
| 49 |
+
00:32.000 --> 00:34.000
|
| 50 |
+
Lo primero es utilizamos el
|
| 51 |
+
do.
|
| 52 |
+
|
| 53 |
+
00:34.000 --> 00:40.000
|
| 54 |
+
Y dentro del do, en los corchetes, va a
|
| 55 |
+
ser el código que se va a ejecutar.
|
| 56 |
+
|
| 57 |
+
00:40.000 --> 00:45.000
|
| 58 |
+
Aquí la primera diferencia con while es
|
| 59 |
+
que primero vamos a poner el código a ejecutar,
|
| 60 |
+
|
| 61 |
+
00:45.000 --> 00:52.000
|
| 62 |
+
y ya después utilizamos el while para
|
| 63 |
+
poder ver cuál es la condición que se tiene que cumplir.
|
| 64 |
+
|
| 65 |
+
00:53.000 --> 00:56.000
|
| 66 |
+
Entonces, primero va a entrar el código a
|
| 67 |
+
ejecutar,
|
| 68 |
+
|
| 69 |
+
00:56.000 --> 01:00.000
|
| 70 |
+
después se va a ver cómo lleva esta
|
| 71 |
+
condición a ver si se está cumpliendo.
|
| 72 |
+
|
| 73 |
+
01:00.000 --> 01:03.000
|
| 74 |
+
Siempre y cuando la condición aquí se siga
|
| 75 |
+
cumpliendo,
|
| 76 |
+
|
| 77 |
+
01:03.000 --> 01:07.000
|
| 78 |
+
regresamos a el do para poder implementar
|
| 79 |
+
el código que se tiene que ejecutar,
|
| 80 |
+
|
| 81 |
+
01:07.000 --> 01:11.000
|
| 82 |
+
así sucesivamente, hasta que la condición
|
| 83 |
+
se deje de cumplir.
|
| 84 |
+
|
| 85 |
+
01:11.000 --> 01:14.000
|
| 86 |
+
En ese momento va a entrar un break y se
|
| 87 |
+
va a romper prácticamente
|
| 88 |
+
|
| 89 |
+
01:14.000 --> 01:17.000
|
| 90 |
+
nuestro loop de lo que sea que estemos
|
| 91 |
+
construyendo.
|
| 92 |
+
|
| 93 |
+
01:17.000 --> 01:22.000
|
| 94 |
+
Entonces, ya en un ejemplo mucho más
|
| 95 |
+
práctico de cómo construiríamos un doWhile,
|
| 96 |
+
|
| 97 |
+
01:22.000 --> 01:25.000
|
| 98 |
+
es, venimos aquí y construimos una
|
| 99 |
+
variable let,
|
| 100 |
+
|
| 101 |
+
01:25.000 --> 01:30.000
|
| 102 |
+
que en este caso se va a llamar contador,
|
| 103 |
+
y va a ser igual a cero.
|
| 104 |
+
|
| 105 |
+
01:30.000 --> 01:34.000
|
| 106 |
+
En este momento vamos a utilizar entonces
|
| 107 |
+
el do con nuestros brackets,
|
| 108 |
+
|
| 109 |
+
01:34.000 --> 01:40.000
|
| 110 |
+
y aquí vamos a poner el código que
|
| 111 |
+
nosotros queremos que se ejecute de primera instancia.
|
| 112 |
+
|
| 113 |
+
01:40.000 --> 01:43.000
|
| 114 |
+
Para hacer algo sencillo, vamos a utilizar
|
| 115 |
+
un console.log
|
| 116 |
+
|
| 117 |
+
01:43.000 --> 01:47.000
|
| 118 |
+
que nos vaya a imprimir el valor de contador,
|
| 119 |
+
|
| 120 |
+
01:47.000 --> 01:50.000
|
| 121 |
+
y después, para evitar entrar en un loop
|
| 122 |
+
infinito,
|
| 123 |
+
|
| 124 |
+
01:50.000 --> 01:56.000
|
| 125 |
+
vamos a poner que contador tiene que
|
| 126 |
+
incrementarse por uno.
|
| 127 |
+
|
| 128 |
+
01:56.000 --> 01:59.000
|
| 129 |
+
Ya que tenemos eso, entonces vamos a venir
|
| 130 |
+
a nuestro while,
|
| 131 |
+
|
| 132 |
+
01:59.000 --> 02:02.000
|
| 133 |
+
y en nuestro while vamos a poner cuál es
|
| 134 |
+
la condición.
|
| 135 |
+
|
| 136 |
+
02:02.000 --> 02:08.000
|
| 137 |
+
Mientras contador sea menor a
|
| 138 |
+
10,
|
| 139 |
+
|
| 140 |
+
02:08.000 --> 02:13.000
|
| 141 |
+
entonces se tiene que seguir ejecutando
|
| 142 |
+
este do.
|
| 143 |
+
|
| 144 |
+
02:13.000 --> 02:18.000
|
| 145 |
+
Esta es prácticamente la estructura en un
|
| 146 |
+
ejemplo de cómo utilizaríamos un doWhile.
|
| 147 |
+
|
| 148 |
+
02:18.000 --> 02:21.000
|
| 149 |
+
Tenemos el código que se va a ejecutar de
|
| 150 |
+
primera mano,
|
| 151 |
+
|
| 152 |
+
02:21.000 --> 02:24.000
|
| 153 |
+
utilizando el do, y ya después tenemos
|
| 154 |
+
nuestra condición con nuestro while.
|
| 155 |
+
|
| 156 |
+
02:24.000 --> 02:30.000
|
| 157 |
+
Si guardamos esto, aquí podemos ver que se
|
| 158 |
+
está imprimiendo del 0 al 9 una vez más.
|
| 159 |
+
|
| 160 |
+
02:30.000 --> 02:31.000
|
| 161 |
+
Pero entonces tú puedes
|
| 162 |
+
preguntar,
|
| 163 |
+
|
| 164 |
+
02:31.000 --> 02:35.000
|
| 165 |
+
¿cómo, Diego? Pues no me queda muy claro
|
| 166 |
+
cuál es la diferencia,
|
| 167 |
+
|
| 168 |
+
02:35.000 --> 02:39.000
|
| 169 |
+
por ejemplo, entre un while y un doWhile,
|
| 170 |
+
para qué lo utilizaría.
|
| 171 |
+
|
| 172 |
+
02:39.000 --> 02:44.000
|
| 173 |
+
Como te acabo de comentar, la diferencia
|
| 174 |
+
principal es que en un doWhile,
|
| 175 |
+
|
| 176 |
+
02:44.000 --> 02:48.000
|
| 177 |
+
primero se va a ejecutar el código antes
|
| 178 |
+
de validar la condición.
|
| 179 |
+
|
| 180 |
+
02:48.000 --> 02:53.000
|
| 181 |
+
Y en un while, siempre se va a validar la
|
| 182 |
+
condición antes de ejecutar el código.
|
| 183 |
+
|
| 184 |
+
02:53.000 --> 02:55.000
|
| 185 |
+
Entonces, el caso de uso
|
| 186 |
+
es,
|
| 187 |
+
|
| 188 |
+
02:55.000 --> 02:59.000
|
| 189 |
+
si tú requieres que primero se ejecute el
|
| 190 |
+
código antes de que se valude,
|
| 191 |
+
|
| 192 |
+
02:59.000 --> 03:02.000
|
| 193 |
+
si es verdad o no, utilizas un doWhile.
|
| 194 |
+
|
| 195 |
+
03:02.000 --> 03:05.000
|
| 196 |
+
Si lo que necesitas es nada más validar
|
| 197 |
+
que algo sea verdad
|
| 198 |
+
|
| 199 |
+
03:05.000 --> 03:09.000
|
| 200 |
+
antes de implementar el código, utilizas
|
| 201 |
+
un while.
|
| 202 |
+
|
| 203 |
+
03:09.000 --> 03:14.000
|
| 204 |
+
Pero de forma práctica, esta es la forma
|
| 205 |
+
de poder implementar un doWhile.
|
| 206 |
+
|
subir/Curso de Fundamentos de JavaScript/02-Estructuras de Control y Lógica/10-Lecturas recomendadas.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://github.com/platzi/basico-js
|
subir/Curso de Fundamentos de JavaScript/02-Estructuras de Control y Lógica/10-Resumen.html
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
subir/Curso de Fundamentos de JavaScript/02-Estructuras de Control y Lógica/10-index_4e2b15d9-94de-49f9-bb60-c70238a85a25.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/*
|
| 2 |
+
|
| 3 |
+
do {
|
| 4 |
+
código
|
| 5 |
+
} while (condicion)
|
| 6 |
+
|
| 7 |
+
*/
|
| 8 |
+
|
| 9 |
+
let contador = 0;
|
| 10 |
+
|
| 11 |
+
do {
|
| 12 |
+
console.log(contador);
|
| 13 |
+
contador++;
|
| 14 |
+
} while (contador < 10);
|
subir/Curso de Fundamentos de JavaScript/03-Funciones y This/01-Funciones en JavaScript Cómo Calcular Precios con Descuentos.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:74dd2e0652e9710cfea7e8bcb16d6169c851ca4202f103dbb434307ce26adf79
|
| 3 |
+
size 124849975
|
subir/Curso de Fundamentos de JavaScript/03-Funciones y This/01-Lecturas recomendadas.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://github.com/platzi/basico-js
|
subir/Curso de Fundamentos de JavaScript/03-Funciones y This/01-Resumen.html
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
subir/Curso de Fundamentos de JavaScript/03-Funciones y This/01-clase-anatomia-de-una-funcion_ebd815d1-e594-4489-b4f8-47db59cdccb7.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
function calculateDiscountedPrice (price, discountPercentage) {
|
| 2 |
+
const discount = (price * discountPercentage) / 100
|
| 3 |
+
const priceWithDiscount = price - discount
|
| 4 |
+
|
| 5 |
+
return priceWithDiscount
|
| 6 |
+
}
|
| 7 |
+
|
| 8 |
+
const originalPrice = 1000
|
| 9 |
+
const discountPercentage = 15
|
| 10 |
+
const finalPrice = calculateDiscountedPrice(originalPrice, discountPercentage)
|
| 11 |
+
|
| 12 |
+
console.log('Original Price: $' + originalPrice)
|
| 13 |
+
console.log('Discount: ' + discountPercentage + '%')
|
| 14 |
+
console.log('Price with discount: $' + finalPrice)
|
subir/Curso de Fundamentos de JavaScript/03-Funciones y This/02-Diferencias entre Funciones y Métodos en JavaScript.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:585c06a6ffcdcb03aa6d90dedf998f2b7d70c19a147a7e92b61adc27aace237f
|
| 3 |
+
size 62509318
|
subir/Curso de Fundamentos de JavaScript/03-Funciones y This/02-Diferencias entre Funciones y Métodos en JavaScript.vtt
ADDED
|
@@ -0,0 +1,815 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:00.000 --> 00:03.000
|
| 4 |
+
En esta clase vamos a hablar sobre las
|
| 5 |
+
principales diferencias
|
| 6 |
+
|
| 7 |
+
00:03.000 --> 00:05.500
|
| 8 |
+
entre funciones y entre
|
| 9 |
+
métodos.
|
| 10 |
+
|
| 11 |
+
00:05.500 --> 00:08.300
|
| 12 |
+
Cuando escribimos una función en JavaScript,
|
| 13 |
+
|
| 14 |
+
00:08.300 --> 00:11.600
|
| 15 |
+
lo que hacemos es, por supuesto, escribirla,
|
| 16 |
+
llamarla,
|
| 17 |
+
|
| 18 |
+
00:11.600 --> 00:15.100
|
| 19 |
+
y si nosotros colocamos un typeof de esa
|
| 20 |
+
función
|
| 21 |
+
|
| 22 |
+
00:15.100 --> 00:17.200
|
| 23 |
+
para saber qué tipo de dato
|
| 24 |
+
es,
|
| 25 |
+
|
| 26 |
+
00:17.200 --> 00:20.300
|
| 27 |
+
el programa nos va a arrojar que es de
|
| 28 |
+
tipo function,
|
| 29 |
+
|
| 30 |
+
00:20.300 --> 00:24.400
|
| 31 |
+
pero eso no quiere decir que las funciones
|
| 32 |
+
dejen de ser objetos.
|
| 33 |
+
|
| 34 |
+
00:24.400 --> 00:26.000
|
| 35 |
+
Al igual que los
|
| 36 |
+
objetos,
|
| 37 |
+
|
| 38 |
+
00:26.000 --> 00:28.400
|
| 39 |
+
las funciones también tienen propiedades,
|
| 40 |
+
|
| 41 |
+
00:28.400 --> 00:31.700
|
| 42 |
+
también tienen métodos, tienen un contexto
|
| 43 |
+
de ejecución
|
| 44 |
+
|
| 45 |
+
00:31.700 --> 00:33.900
|
| 46 |
+
y también pueden ser
|
| 47 |
+
invocadas.
|
| 48 |
+
|
| 49 |
+
00:33.900 --> 00:36.700
|
| 50 |
+
Así que todo esto, lo ideal es que lo
|
| 51 |
+
revisemos,
|
| 52 |
+
|
| 53 |
+
00:36.700 --> 00:39.400
|
| 54 |
+
todas esas propiedades y todas las
|
| 55 |
+
características
|
| 56 |
+
|
| 57 |
+
00:39.400 --> 00:42.000
|
| 58 |
+
que también tienen al igual que los objetos.
|
| 59 |
+
|
| 60 |
+
00:42.000 --> 00:44.400
|
| 61 |
+
Para ello, también tengo una pregunta para ti,
|
| 62 |
+
|
| 63 |
+
00:44.400 --> 00:46.600
|
| 64 |
+
y es que ¿crees que las
|
| 65 |
+
funciones
|
| 66 |
+
|
| 67 |
+
00:46.600 --> 00:50.300
|
| 68 |
+
puedan estar dentro de los objetos y
|
| 69 |
+
viceversa?
|
| 70 |
+
|
| 71 |
+
00:50.300 --> 00:52.500
|
| 72 |
+
Bueno, vamos a revisar eso en esta clase,
|
| 73 |
+
|
| 74 |
+
00:52.500 --> 00:55.500
|
| 75 |
+
justamente para ello vamos a ir a Visual
|
| 76 |
+
Studio Code.
|
| 77 |
+
|
| 78 |
+
00:55.500 --> 00:58.100
|
| 79 |
+
Vamos a comenzar hablando de las
|
| 80 |
+
capacidades
|
| 81 |
+
|
| 82 |
+
00:58.100 --> 01:01.400
|
| 83 |
+
que tienen las funciones al igual que
|
| 84 |
+
otros objetos.
|
| 85 |
+
|
| 86 |
+
01:01.400 --> 01:03.900
|
| 87 |
+
Entonces, coloquemos un título alusivo a esto,
|
| 88 |
+
|
| 89 |
+
01:03.900 --> 01:08.100
|
| 90 |
+
capacidades que tienen las
|
| 91 |
+
funciones
|
| 92 |
+
|
| 93 |
+
01:08.100 --> 01:11.400
|
| 94 |
+
al igual que otros
|
| 95 |
+
objetos.
|
| 96 |
+
|
| 97 |
+
01:11.400 --> 01:13.400
|
| 98 |
+
Muy bien, teniendo en cuenta
|
| 99 |
+
esto,
|
| 100 |
+
|
| 101 |
+
01:13.400 --> 01:15.500
|
| 102 |
+
lo que vamos a hacer es
|
| 103 |
+
comenzar
|
| 104 |
+
|
| 105 |
+
01:15.500 --> 01:18.300
|
| 106 |
+
hablando justamente de estas
|
| 107 |
+
funciones
|
| 108 |
+
|
| 109 |
+
01:18.300 --> 01:21.300
|
| 110 |
+
que nosotros podemos pasar como
|
| 111 |
+
argumentos
|
| 112 |
+
|
| 113 |
+
01:21.300 --> 01:23.000
|
| 114 |
+
a otras
|
| 115 |
+
funciones.
|
| 116 |
+
|
| 117 |
+
01:23.000 --> 01:24.400
|
| 118 |
+
Vamos a escribir
|
| 119 |
+
acá,
|
| 120 |
+
|
| 121 |
+
01:24.400 --> 01:28.800
|
| 122 |
+
pasar funciones como
|
| 123 |
+
argumentos.
|
| 124 |
+
|
| 125 |
+
01:28.800 --> 01:31.900
|
| 126 |
+
Esto también es conocido como callback.
|
| 127 |
+
|
| 128 |
+
01:31.900 --> 01:33.500
|
| 129 |
+
Esto es súper
|
| 130 |
+
importante
|
| 131 |
+
|
| 132 |
+
01:33.500 --> 01:36.300
|
| 133 |
+
y normalmente lo hablamos muchísimo en
|
| 134 |
+
programación
|
| 135 |
+
|
| 136 |
+
01:36.300 --> 01:38.800
|
| 137 |
+
y también es muy preguntado en
|
| 138 |
+
entrevistas
|
| 139 |
+
|
| 140 |
+
01:38.800 --> 01:40.400
|
| 141 |
+
para que lo tengas en
|
| 142 |
+
cuenta.
|
| 143 |
+
|
| 144 |
+
01:40.400 --> 01:42.600
|
| 145 |
+
Simplemente un callback es una
|
| 146 |
+
función
|
| 147 |
+
|
| 148 |
+
01:42.600 --> 01:44.900
|
| 149 |
+
que se pasa como
|
| 150 |
+
argumento.
|
| 151 |
+
|
| 152 |
+
01:44.900 --> 01:46.000
|
| 153 |
+
¿Cómo sería
|
| 154 |
+
esto?
|
| 155 |
+
|
| 156 |
+
01:46.000 --> 01:48.600
|
| 157 |
+
Entonces colocamos acá, por ejemplo,
|
| 158 |
+
una función,
|
| 159 |
+
|
| 160 |
+
01:48.600 --> 01:51.800
|
| 161 |
+
voy a colocarle cualquier nombre en este
|
| 162 |
+
momento,
|
| 163 |
+
|
| 164 |
+
01:51.800 --> 01:55.600
|
| 165 |
+
y si nosotros creamos otra función, por
|
| 166 |
+
ejemplo, B,
|
| 167 |
+
|
| 168 |
+
01:55.600 --> 01:58.200
|
| 169 |
+
nosotros podríamos pasarle como
|
| 170 |
+
argumento
|
| 171 |
+
|
| 172 |
+
01:58.200 --> 02:01.200
|
| 173 |
+
esa función A que habíamos creado al
|
| 174 |
+
principio.
|
| 175 |
+
|
| 176 |
+
02:01.200 --> 02:03.800
|
| 177 |
+
Y simplemente la llamamos común y
|
| 178 |
+
corriente
|
| 179 |
+
|
| 180 |
+
02:03.800 --> 02:07.500
|
| 181 |
+
y le pasamos como argumento esa función A.
|
| 182 |
+
|
| 183 |
+
02:07.500 --> 02:10.100
|
| 184 |
+
De esa manera ya tendríamos las
|
| 185 |
+
funciones
|
| 186 |
+
|
| 187 |
+
02:10.100 --> 02:13.500
|
| 188 |
+
que son pasadas como
|
| 189 |
+
argumentos.
|
| 190 |
+
|
| 191 |
+
02:13.500 --> 02:16.500
|
| 192 |
+
Por otro lado, lo que podemos
|
| 193 |
+
hacer
|
| 194 |
+
|
| 195 |
+
02:16.500 --> 02:19.000
|
| 196 |
+
es retornar
|
| 197 |
+
funciones.
|
| 198 |
+
|
| 199 |
+
02:19.000 --> 02:20.700
|
| 200 |
+
¿Cómo nos quedaría
|
| 201 |
+
esto?
|
| 202 |
+
|
| 203 |
+
02:20.700 --> 02:23.200
|
| 204 |
+
Bueno, vamos a escribir una función,
|
| 205 |
+
|
| 206 |
+
02:23.200 --> 02:26.900
|
| 207 |
+
voy a copiarme esta función que teníamos
|
| 208 |
+
por aquí arriba,
|
| 209 |
+
|
| 210 |
+
02:26.900 --> 02:32.500
|
| 211 |
+
voy a escribir acá, retornar funciones,
|
| 212 |
+
|
| 213 |
+
02:32.500 --> 02:35.500
|
| 214 |
+
y dentro de esta función
|
| 215 |
+
A,
|
| 216 |
+
|
| 217 |
+
02:35.500 --> 02:38.800
|
| 218 |
+
lo que vamos a hacer es escribir esta
|
| 219 |
+
misma función B,
|
| 220 |
+
|
| 221 |
+
02:38.800 --> 02:43.200
|
| 222 |
+
le voy a quitar este parámetro que le
|
| 223 |
+
habíamos escrito antes,
|
| 224 |
+
|
| 225 |
+
02:43.200 --> 02:46.500
|
| 226 |
+
y lo que podemos hacer es que dentro de la
|
| 227 |
+
función A,
|
| 228 |
+
|
| 229 |
+
02:46.500 --> 02:48.800
|
| 230 |
+
pero fuera de la función
|
| 231 |
+
B,
|
| 232 |
+
|
| 233 |
+
02:48.800 --> 02:52.900
|
| 234 |
+
podemos retornar, return, la misma función B.
|
| 235 |
+
|
| 236 |
+
02:52.900 --> 02:55.700
|
| 237 |
+
Esto, por supuesto, iría atado a la
|
| 238 |
+
lógica
|
| 239 |
+
|
| 240 |
+
02:55.700 --> 02:58.900
|
| 241 |
+
que nosotros necesitemos en cierto caso en
|
| 242 |
+
particular,
|
| 243 |
+
|
| 244 |
+
02:58.900 --> 03:01.000
|
| 245 |
+
sin embargo, en este caso,
|
| 246 |
+
bueno,
|
| 247 |
+
|
| 248 |
+
03:01.000 --> 03:04.300
|
| 249 |
+
podríamos notar que podemos hacer este
|
| 250 |
+
tipo de cosas
|
| 251 |
+
|
| 252 |
+
03:04.300 --> 03:05.700
|
| 253 |
+
al trabajar con
|
| 254 |
+
funciones,
|
| 255 |
+
|
| 256 |
+
03:05.700 --> 03:11.400
|
| 257 |
+
tener otra función dentro y también
|
| 258 |
+
retornarla.
|
| 259 |
+
|
| 260 |
+
03:11.400 --> 03:13.400
|
| 261 |
+
Por otro lado, lo que podemos
|
| 262 |
+
hacer
|
| 263 |
+
|
| 264 |
+
03:13.400 --> 03:16.700
|
| 265 |
+
es asignar funciones a
|
| 266 |
+
variables.
|
| 267 |
+
|
| 268 |
+
03:16.700 --> 03:20.800
|
| 269 |
+
Asignar funciones a
|
| 270 |
+
variables.
|
| 271 |
+
|
| 272 |
+
03:20.800 --> 03:22.300
|
| 273 |
+
En este caso, ¿cómo
|
| 274 |
+
sería?
|
| 275 |
+
|
| 276 |
+
03:22.300 --> 03:26.100
|
| 277 |
+
Bueno, podemos colocar const A, por ejemplo,
|
| 278 |
+
|
| 279 |
+
03:26.100 --> 03:29.900
|
| 280 |
+
y lo que hacemos es decir function y la
|
| 281 |
+
función.
|
| 282 |
+
|
| 283 |
+
03:29.900 --> 03:33.600
|
| 284 |
+
En este caso, algo importante anotar
|
| 285 |
+
function
|
| 286 |
+
|
| 287 |
+
03:33.600 --> 03:36.600
|
| 288 |
+
es que tenemos uno, una
|
| 289 |
+
variable,
|
| 290 |
+
|
| 291 |
+
03:36.600 --> 03:40.200
|
| 292 |
+
que en este caso es A, seguido de la función,
|
| 293 |
+
|
| 294 |
+
03:40.200 --> 03:43.200
|
| 295 |
+
pero ya esta función no tiene nombre,
|
| 296 |
+
|
| 297 |
+
03:43.200 --> 03:45.400
|
| 298 |
+
es decir, que el nombre de esa
|
| 299 |
+
función
|
| 300 |
+
|
| 301 |
+
03:45.400 --> 03:48.300
|
| 302 |
+
es como si la tuviera ya esta variable y
|
| 303 |
+
listo,
|
| 304 |
+
|
| 305 |
+
03:48.300 --> 03:49.900
|
| 306 |
+
no tenemos que volver a
|
| 307 |
+
colocarle
|
| 308 |
+
|
| 309 |
+
03:49.900 --> 03:51.700
|
| 310 |
+
otro nombre de función
|
| 311 |
+
allí.
|
| 312 |
+
|
| 313 |
+
03:51.700 --> 03:53.300
|
| 314 |
+
Entonces, esa es otra de las
|
| 315 |
+
formas
|
| 316 |
+
|
| 317 |
+
03:53.300 --> 03:56.300
|
| 318 |
+
que podemos hacer también de las funciones,
|
| 319 |
+
|
| 320 |
+
03:56.300 --> 03:58.100
|
| 321 |
+
al igual que otros
|
| 322 |
+
objetos.
|
| 323 |
+
|
| 324 |
+
03:58.100 --> 04:01.900
|
| 325 |
+
En este caso, lo que hacemos es crear una
|
| 326 |
+
variable,
|
| 327 |
+
|
| 328 |
+
04:01.900 --> 04:04.000
|
| 329 |
+
puede ser, por ejemplo, const
|
| 330 |
+
A,
|
| 331 |
+
|
| 332 |
+
04:04.000 --> 04:05.600
|
| 333 |
+
solamente para este
|
| 334 |
+
ejemplo,
|
| 335 |
+
|
| 336 |
+
04:05.600 --> 04:10.400
|
| 337 |
+
y decimos function y creamos una función
|
| 338 |
+
normalita,
|
| 339 |
+
|
| 340 |
+
04:10.400 --> 04:11.600
|
| 341 |
+
como ya la
|
| 342 |
+
conocemos.
|
| 343 |
+
|
| 344 |
+
04:11.600 --> 04:13.900
|
| 345 |
+
En este caso, es importante
|
| 346 |
+
notar
|
| 347 |
+
|
| 348 |
+
04:13.900 --> 04:17.600
|
| 349 |
+
que el nombre de la función en este caso
|
| 350 |
+
desaparece
|
| 351 |
+
|
| 352 |
+
04:17.600 --> 04:21.200
|
| 353 |
+
y lo dejamos netamente a cargo de la
|
| 354 |
+
variable
|
| 355 |
+
|
| 356 |
+
04:21.200 --> 04:23.100
|
| 357 |
+
que nosotros acabamos de
|
| 358 |
+
crear.
|
| 359 |
+
|
| 360 |
+
04:23.100 --> 04:24.800
|
| 361 |
+
Esto también se
|
| 362 |
+
conoce
|
| 363 |
+
|
| 364 |
+
04:24.800 --> 04:28.500
|
| 365 |
+
con el nombre de expresión de función.
|
| 366 |
+
|
| 367 |
+
04:28.500 --> 04:31.800
|
| 368 |
+
Estas funciones que nosotros conocemos
|
| 369 |
+
normalmente,
|
| 370 |
+
|
| 371 |
+
04:31.800 --> 04:34.200
|
| 372 |
+
es decir, que creamos la palabra clave,
|
| 373 |
+
|
| 374 |
+
04:34.200 --> 04:35.900
|
| 375 |
+
luego el nombre, en
|
| 376 |
+
fin,
|
| 377 |
+
|
| 378 |
+
04:35.900 --> 04:39.000
|
| 379 |
+
esto se conoce como declaración de función.
|
| 380 |
+
|
| 381 |
+
04:39.000 --> 04:41.200
|
| 382 |
+
Entonces, esto también es súper
|
| 383 |
+
clave
|
| 384 |
+
|
| 385 |
+
04:41.200 --> 04:44.100
|
| 386 |
+
a la hora de escribir funciones, en fin.
|
| 387 |
+
|
| 388 |
+
04:44.100 --> 04:46.400
|
| 389 |
+
Otra de las cosas que podemos
|
| 390 |
+
encontrar
|
| 391 |
+
|
| 392 |
+
04:46.400 --> 04:48.100
|
| 393 |
+
es que estas
|
| 394 |
+
funciones
|
| 395 |
+
|
| 396 |
+
04:48.100 --> 04:51.700
|
| 397 |
+
pueden tener tanto propiedades como métodos.
|
| 398 |
+
|
| 399 |
+
04:51.700 --> 04:53.100
|
| 400 |
+
Entonces, vamos a
|
| 401 |
+
escribirle,
|
| 402 |
+
|
| 403 |
+
04:53.100 --> 04:56.300
|
| 404 |
+
tener propiedades y
|
| 405 |
+
métodos.
|
| 406 |
+
|
| 407 |
+
04:56.300 --> 04:59.200
|
| 408 |
+
En este caso, ¿cómo lo podríamos
|
| 409 |
+
hacer?
|
| 410 |
+
|
| 411 |
+
04:59.200 --> 05:02.000
|
| 412 |
+
Bueno, escribimos una
|
| 413 |
+
función
|
| 414 |
+
|
| 415 |
+
05:02.000 --> 05:06.400
|
| 416 |
+
y en esa función, ya sería normal, como la
|
| 417 |
+
conocemos,
|
| 418 |
+
|
| 419 |
+
05:06.400 --> 05:08.500
|
| 420 |
+
sin embargo, podemos crear, por ejemplo,
|
| 421 |
+
|
| 422 |
+
05:08.500 --> 05:11.200
|
| 423 |
+
un objeto,
|
| 424 |
+
obj,
|
| 425 |
+
|
| 426 |
+
05:11.200 --> 05:15.100
|
| 427 |
+
y vamos a esa función
|
| 428 |
+
decirle,
|
| 429 |
+
|
| 430 |
+
05:15.100 --> 05:18.200
|
| 431 |
+
oye, mira, yo quiero que su contexto de
|
| 432 |
+
ejecución
|
| 433 |
+
|
| 434 |
+
05:18.200 --> 05:20.100
|
| 435 |
+
sea
|
| 436 |
+
objeto.
|
| 437 |
+
|
| 438 |
+
05:20.100 --> 05:22.200
|
| 439 |
+
Entonces, lo que hacemos es
|
| 440 |
+
decirle
|
| 441 |
+
|
| 442 |
+
05:22.200 --> 05:24.600
|
| 443 |
+
que la función tenga un
|
| 444 |
+
método,
|
| 445 |
+
|
| 446 |
+
05:24.600 --> 05:26.500
|
| 447 |
+
que en este caso sería
|
| 448 |
+
call,
|
| 449 |
+
|
| 450 |
+
05:26.500 --> 05:29.700
|
| 451 |
+
y le podríamos pasar también el
|
| 452 |
+
objeto
|
| 453 |
+
|
| 454 |
+
05:29.700 --> 05:31.100
|
| 455 |
+
para que lo
|
| 456 |
+
tome
|
| 457 |
+
|
| 458 |
+
05:31.100 --> 05:34.000
|
| 459 |
+
como si fuera precisamente su contexto de
|
| 460 |
+
ejecución.
|
| 461 |
+
|
| 462 |
+
05:34.000 --> 05:37.700
|
| 463 |
+
No te preocupes por esos términos de
|
| 464 |
+
contextos de ejecución,
|
| 465 |
+
|
| 466 |
+
05:37.700 --> 05:40.000
|
| 467 |
+
lo único importante acá es
|
| 468 |
+
saber
|
| 469 |
+
|
| 470 |
+
05:40.000 --> 05:42.600
|
| 471 |
+
que las funciones pueden también tener
|
| 472 |
+
métodos
|
| 473 |
+
|
| 474 |
+
05:42.600 --> 05:45.200
|
| 475 |
+
asociados para diferentes
|
| 476 |
+
fines.
|
| 477 |
+
|
| 478 |
+
05:45.200 --> 05:48.100
|
| 479 |
+
Otra de las cosas que podemos hacer con
|
| 480 |
+
funciones
|
| 481 |
+
|
| 482 |
+
05:48.100 --> 05:51.000
|
| 483 |
+
es justamente anidar
|
| 484 |
+
funciones.
|
| 485 |
+
|
| 486 |
+
05:51.000 --> 05:54.500
|
| 487 |
+
Entonces, vamos a colocar anidar funciones,
|
| 488 |
+
|
| 489 |
+
05:54.500 --> 05:58.000
|
| 490 |
+
que esto también se conoce con el nombre
|
| 491 |
+
de nested functions,
|
| 492 |
+
|
| 493 |
+
05:58.000 --> 06:00.200
|
| 494 |
+
también sería en inglés, voy a colocarlo
|
| 495 |
+
por acá,
|
| 496 |
+
|
| 497 |
+
06:00.200 --> 06:02.600
|
| 498 |
+
nested
|
| 499 |
+
functions,
|
| 500 |
+
|
| 501 |
+
06:02.600 --> 06:03.500
|
| 502 |
+
listo.
|
| 503 |
+
|
| 504 |
+
06:03.500 --> 06:05.200
|
| 505 |
+
Ahora, ¿cómo lo podríamos
|
| 506 |
+
hacer?
|
| 507 |
+
|
| 508 |
+
06:05.200 --> 06:07.300
|
| 509 |
+
Bueno, colocamos, por
|
| 510 |
+
ejemplo,
|
| 511 |
+
|
| 512 |
+
06:07.300 --> 06:09.700
|
| 513 |
+
voy a copiarme por acá de alguna que ya
|
| 514 |
+
tengamos,
|
| 515 |
+
|
| 516 |
+
06:09.700 --> 06:11.500
|
| 517 |
+
como
|
| 518 |
+
esta,
|
| 519 |
+
|
| 520 |
+
06:11.500 --> 06:13.900
|
| 521 |
+
y lo que hacemos es pegarla por acá,
|
| 522 |
+
|
| 523 |
+
06:13.900 --> 06:16.400
|
| 524 |
+
voy a evitar el
|
| 525 |
+
return,
|
| 526 |
+
|
| 527 |
+
06:16.400 --> 06:18.300
|
| 528 |
+
que en este caso no
|
| 529 |
+
sería,
|
| 530 |
+
|
| 531 |
+
06:18.300 --> 06:21.000
|
| 532 |
+
y podemos anidar de esta forma, es decir,
|
| 533 |
+
|
| 534 |
+
06:21.000 --> 06:23.600
|
| 535 |
+
function A contendría a function
|
| 536 |
+
B,
|
| 537 |
+
|
| 538 |
+
06:23.600 --> 06:27.000
|
| 539 |
+
y function B podría contener, por ejemplo,
|
| 540 |
+
|
| 541 |
+
06:27.000 --> 06:30.700
|
| 542 |
+
otra function, que en este caso podría ser C.
|
| 543 |
+
|
| 544 |
+
06:30.700 --> 06:33.300
|
| 545 |
+
Asimismo, podríamos irlas
|
| 546 |
+
llamando
|
| 547 |
+
|
| 548 |
+
06:33.300 --> 06:34.900
|
| 549 |
+
dentro de cada
|
| 550 |
+
una,
|
| 551 |
+
|
| 552 |
+
06:34.900 --> 06:37.000
|
| 553 |
+
si lo necesitamos así, por supuesto.
|
| 554 |
+
|
| 555 |
+
06:37.000 --> 06:39.400
|
| 556 |
+
Entonces, sería aquí llamar
|
| 557 |
+
B
|
| 558 |
+
|
| 559 |
+
06:39.400 --> 06:41.700
|
| 560 |
+
y acá llamar
|
| 561 |
+
A.
|
| 562 |
+
|
| 563 |
+
06:41.700 --> 06:44.600
|
| 564 |
+
Esta sería una de las formas en las que
|
| 565 |
+
podríamos
|
| 566 |
+
|
| 567 |
+
06:44.600 --> 06:47.700
|
| 568 |
+
llamar funciones dentro de ellas mismas,
|
| 569 |
+
|
| 570 |
+
06:47.700 --> 06:50.500
|
| 571 |
+
acceder a las variables que
|
| 572 |
+
tienen
|
| 573 |
+
|
| 574 |
+
06:50.500 --> 06:52.800
|
| 575 |
+
las funciones que son
|
| 576 |
+
grandes,
|
| 577 |
+
|
| 578 |
+
06:52.800 --> 06:54.300
|
| 579 |
+
es decir, por
|
| 580 |
+
ejemplo,
|
| 581 |
+
|
| 582 |
+
06:54.300 --> 06:56.300
|
| 583 |
+
desde C puedo acceder a propiedades de A,
|
| 584 |
+
|
| 585 |
+
06:56.300 --> 06:58.500
|
| 586 |
+
desde B puedo acceder a propiedades de A,
|
| 587 |
+
|
| 588 |
+
06:58.500 --> 07:00.300
|
| 589 |
+
y así
|
| 590 |
+
sucesivamente.
|
| 591 |
+
|
| 592 |
+
07:00.300 --> 07:03.100
|
| 593 |
+
Y esta es una de las características que
|
| 594 |
+
también tiene
|
| 595 |
+
|
| 596 |
+
07:03.100 --> 07:06.000
|
| 597 |
+
el hecho de que podamos anidar funciones.
|
| 598 |
+
|
| 599 |
+
07:06.000 --> 07:10.000
|
| 600 |
+
Por otro lado, vamos a resolver esta
|
| 601 |
+
pregunta
|
| 602 |
+
|
| 603 |
+
07:10.000 --> 07:12.900
|
| 604 |
+
que hicimos antes de llegar a Visual
|
| 605 |
+
Studio Code,
|
| 606 |
+
|
| 607 |
+
07:12.900 --> 07:17.700
|
| 608 |
+
y es que si es posible almacenar funciones
|
| 609 |
+
en objetos.
|
| 610 |
+
|
| 611 |
+
07:17.700 --> 07:19.800
|
| 612 |
+
Porfa, déjame en los
|
| 613 |
+
comentarios
|
| 614 |
+
|
| 615 |
+
07:19.800 --> 07:23.300
|
| 616 |
+
tú qué crees antes de que sigamos
|
| 617 |
+
continuando con este tema.
|
| 618 |
+
|
| 619 |
+
07:23.300 --> 07:24.800
|
| 620 |
+
Entonces, voy a
|
| 621 |
+
colocar,
|
| 622 |
+
|
| 623 |
+
07:24.800 --> 07:31.100
|
| 624 |
+
¿es posible almacenar funciones en
|
| 625 |
+
objetos?
|
| 626 |
+
|
| 627 |
+
07:31.100 --> 07:33.300
|
| 628 |
+
Vamos a colocarlo por acá en pregunta,
|
| 629 |
+
|
| 630 |
+
07:33.300 --> 07:36.300
|
| 631 |
+
mientras yo ya sé que estás escribiendo en
|
| 632 |
+
los comentarios
|
| 633 |
+
|
| 634 |
+
07:36.300 --> 07:38.600
|
| 635 |
+
la respuesta, y vamos a
|
| 636 |
+
revisarla.
|
| 637 |
+
|
| 638 |
+
07:38.600 --> 07:40.500
|
| 639 |
+
Entonces, vamos a decir lo siguiente.
|
| 640 |
+
|
| 641 |
+
07:40.500 --> 07:43.200
|
| 642 |
+
Tenemos un objeto, que en este caso,
|
| 643 |
+
por ejemplo,
|
| 644 |
+
|
| 645 |
+
07:43.200 --> 07:46.900
|
| 646 |
+
sería un cohete, vamos a escribirlo en inglés,
|
| 647 |
+
|
| 648 |
+
07:46.900 --> 07:49.200
|
| 649 |
+
y acá vamos a colocar las propiedades,
|
| 650 |
+
|
| 651 |
+
07:49.200 --> 07:51.400
|
| 652 |
+
por supuesto, que tiene este objeto.
|
| 653 |
+
|
| 654 |
+
07:51.400 --> 07:52.600
|
| 655 |
+
¿Como cuál
|
| 656 |
+
sería?
|
| 657 |
+
|
| 658 |
+
07:52.600 --> 07:57.000
|
| 659 |
+
El nombre, vamos a colocarle Falcon 9,
|
| 660 |
+
|
| 661 |
+
07:57.000 --> 07:59.700
|
| 662 |
+
y luego vamos a colocarle otra propiedad.
|
| 663 |
+
|
| 664 |
+
07:59.700 --> 08:01.800
|
| 665 |
+
Supongamos que ese es el
|
| 666 |
+
cohete,
|
| 667 |
+
|
| 668 |
+
08:01.800 --> 08:04.500
|
| 669 |
+
y en su lanzamiento va a dar un mensaje.
|
| 670 |
+
|
| 671 |
+
08:04.500 --> 08:07.600
|
| 672 |
+
Entonces, vamos a colocar launch message,
|
| 673 |
+
|
| 674 |
+
08:07.600 --> 08:10.900
|
| 675 |
+
y acá lo que podemos hacer es que
|
| 676 |
+
justamente
|
| 677 |
+
|
| 678 |
+
08:10.900 --> 08:14.300
|
| 679 |
+
cuando el cohete despegue, ese mensaje sea
|
| 680 |
+
mostrado,
|
| 681 |
+
|
| 682 |
+
08:14.300 --> 08:15.100
|
| 683 |
+
por
|
| 684 |
+
ejemplo.
|
| 685 |
+
|
| 686 |
+
08:15.100 --> 08:15.900
|
| 687 |
+
¿Cómo lo
|
| 688 |
+
haríamos?
|
| 689 |
+
|
| 690 |
+
08:15.900 --> 08:18.700
|
| 691 |
+
Bueno, colocando una
|
| 692 |
+
función,
|
| 693 |
+
|
| 694 |
+
08:18.700 --> 08:23.100
|
| 695 |
+
y esta función va a llamarse launch message,
|
| 696 |
+
|
| 697 |
+
08:23.100 --> 08:28.500
|
| 698 |
+
y aquí lo que hacemos es netamente colocar
|
| 699 |
+
un console.log,
|
| 700 |
+
|
| 701 |
+
08:28.500 --> 08:32.400
|
| 702 |
+
y dentro podríamos colocar, por ejemplo,
|
| 703 |
+
un fueguito,
|
| 704 |
+
|
| 705 |
+
08:32.400 --> 08:34.200
|
| 706 |
+
o algo alusivo a ese
|
| 707 |
+
mensaje.
|
| 708 |
+
|
| 709 |
+
08:34.200 --> 08:37.500
|
| 710 |
+
Veamos en los emojis a ver si encontramos
|
| 711 |
+
un fuego,
|
| 712 |
+
|
| 713 |
+
08:37.500 --> 08:39.000
|
| 714 |
+
o algo parecido a
|
| 715 |
+
ello.
|
| 716 |
+
|
| 717 |
+
08:39.000 --> 08:40.300
|
| 718 |
+
Por aquí lo
|
| 719 |
+
vi.
|
| 720 |
+
|
| 721 |
+
08:40.300 --> 08:44.200
|
| 722 |
+
Vamos a copiarlo, lo pegamos, ya tenemos
|
| 723 |
+
nuestro mensaje,
|
| 724 |
+
|
| 725 |
+
08:44.200 --> 08:48.000
|
| 726 |
+
y para poder revisarlo, o para ver, por
|
| 727 |
+
supuesto,
|
| 728 |
+
|
| 729 |
+
08:48.000 --> 08:52.100
|
| 730 |
+
este mensaje, colocamos rocket, luego,
|
| 731 |
+
seguido,
|
| 732 |
+
|
| 733 |
+
08:52.100 --> 08:55.300
|
| 734 |
+
vamos a colocar un punto, launch message,
|
| 735 |
+
|
| 736 |
+
08:55.300 --> 08:58.300
|
| 737 |
+
y ejecutamos esa
|
| 738 |
+
función.
|
| 739 |
+
|
| 740 |
+
08:58.300 --> 09:00.600
|
| 741 |
+
Vamos a correr nuestro programa para
|
| 742 |
+
revisar
|
| 743 |
+
|
| 744 |
+
09:00.600 --> 09:02.700
|
| 745 |
+
qué es lo que sucedió
|
| 746 |
+
acá.
|
| 747 |
+
|
| 748 |
+
09:02.700 --> 09:07.600
|
| 749 |
+
Decimos, node clase, bueno, toca
|
| 750 |
+
escribirlo bien,
|
| 751 |
+
|
| 752 |
+
09:07.600 --> 09:10.500
|
| 753 |
+
por supuesto, corremos el
|
| 754 |
+
programa,
|
| 755 |
+
|
| 756 |
+
09:10.500 --> 09:12.500
|
| 757 |
+
y bueno, nos va a sacar un par de errores,
|
| 758 |
+
|
| 759 |
+
09:12.500 --> 09:15.000
|
| 760 |
+
supongo que por el código que tenemos
|
| 761 |
+
anteriormente.
|
| 762 |
+
|
| 763 |
+
09:15.000 --> 09:18.000
|
| 764 |
+
Lo voy a comentar para que no nos afecte.
|
| 765 |
+
|
| 766 |
+
09:18.000 --> 09:19.800
|
| 767 |
+
Entonces, vamos a
|
| 768 |
+
comentarlo.
|
| 769 |
+
|
| 770 |
+
09:19.800 --> 09:22.700
|
| 771 |
+
Lo voy a comentar de esta forma, que es
|
| 772 |
+
súper simple,
|
| 773 |
+
|
| 774 |
+
09:22.700 --> 09:28.400
|
| 775 |
+
solamente colocar un asterisco antes de
|
| 776 |
+
estos slash,
|
| 777 |
+
|
| 778 |
+
09:28.400 --> 09:31.400
|
| 779 |
+
y ahora sí, vamos a correr nuestro código.
|
| 780 |
+
|
| 781 |
+
09:31.400 --> 09:34.000
|
| 782 |
+
Ahora sí, vemos que tenemos nuestro fueguito,
|
| 783 |
+
|
| 784 |
+
09:34.000 --> 09:36.900
|
| 785 |
+
y es precisamente porque lo que hicimos es,
|
| 786 |
+
|
| 787 |
+
09:36.900 --> 09:39.400
|
| 788 |
+
un objeto, dentro de ese
|
| 789 |
+
objeto,
|
| 790 |
+
|
| 791 |
+
09:39.400 --> 09:42.700
|
| 792 |
+
colocamos en una de sus propiedades,
|
| 793 |
+
una función,
|
| 794 |
+
|
| 795 |
+
09:42.700 --> 09:47.000
|
| 796 |
+
y por supuesto, esa función la podemos
|
| 797 |
+
también ejecutar.
|
| 798 |
+
|
| 799 |
+
09:47.000 --> 09:50.800
|
| 800 |
+
A esto es lo que se le conoce como método.
|
| 801 |
+
|
| 802 |
+
09:50.800 --> 09:53.100
|
| 803 |
+
Entonces, ahí respondiendo a la pregunta,
|
| 804 |
+
|
| 805 |
+
09:53.100 --> 09:56.300
|
| 806 |
+
sí, es posible almacenar funciones en objetos,
|
| 807 |
+
|
| 808 |
+
09:56.300 --> 09:59.800
|
| 809 |
+
y justamente a esto es a lo que le
|
| 810 |
+
conocemos
|
| 811 |
+
|
| 812 |
+
09:59.800 --> 10:21.800
|
| 813 |
+
con el nombre de
|
| 814 |
+
método.
|
| 815 |
+
|
subir/Curso de Fundamentos de JavaScript/03-Funciones y This/02-Lecturas recomendadas.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://github.com/platzi/basico-js
|
subir/Curso de Fundamentos de JavaScript/03-Funciones y This/02-Resumen.html
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
subir/Curso de Fundamentos de JavaScript/03-Funciones y This/02-clase-funciones-vs-metodos_ae2120c7-56da-4567-8adb-ad30c110a238.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
// Capacidades que tienen las funciones al igual que otros objetos
|
| 2 |
+
|
| 3 |
+
// 1. Pasar funciones como argumentos -> callback
|
| 4 |
+
|
| 5 |
+
function a () {}
|
| 6 |
+
function b (a) {}
|
| 7 |
+
b(a)
|
| 8 |
+
|
| 9 |
+
// Retornar funciones
|
| 10 |
+
|
| 11 |
+
function a () {
|
| 12 |
+
function b () {}
|
| 13 |
+
return b
|
| 14 |
+
}
|
| 15 |
+
|
| 16 |
+
// Asignar funciones a variables -> Expresión de función
|
| 17 |
+
|
| 18 |
+
const a = function () {}
|
| 19 |
+
|
| 20 |
+
// Tener propiedades y métodos
|
| 21 |
+
|
| 22 |
+
function a () {}
|
| 23 |
+
const obj = {}
|
| 24 |
+
a.call(obj)
|
| 25 |
+
|
| 26 |
+
// Anidar funciones -> Nested functions
|
| 27 |
+
|
| 28 |
+
function a () {
|
| 29 |
+
function b () {
|
| 30 |
+
function c () {
|
| 31 |
+
|
| 32 |
+
}
|
| 33 |
+
c()
|
| 34 |
+
}
|
| 35 |
+
b()
|
| 36 |
+
}
|
| 37 |
+
a()
|
| 38 |
+
|
| 39 |
+
// ¿Es posible almacenar funciones en objetos?
|
| 40 |
+
|
| 41 |
+
const rocket = {
|
| 42 |
+
name: 'Falcon 9',
|
| 43 |
+
launchMessage: function launchMessage () {
|
| 44 |
+
console.log('🔥')
|
| 45 |
+
}
|
| 46 |
+
}
|
| 47 |
+
|
| 48 |
+
rocket.launchMessage()
|
subir/Curso de Fundamentos de JavaScript/03-Funciones y This/03-Funciones Puras e Impuras en Programación Conceptos y Ejemplos.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:bf959dc19882dcb79ccb4e3e62cf015a70f5bd7ee7ee195d3c06191d28346ea9
|
| 3 |
+
size 62703758
|
subir/Curso de Fundamentos de JavaScript/03-Funciones y This/03-Funciones Puras e Impuras en Programación Conceptos y Ejemplos.vtt
ADDED
|
@@ -0,0 +1,843 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:00.000 --> 00:05.400
|
| 4 |
+
En esta clase vamos a estar hablando sobre
|
| 5 |
+
las funciones puras y las funciones impuras.
|
| 6 |
+
|
| 7 |
+
00:05.400 --> 00:08.500
|
| 8 |
+
Te voy a ir haciendo un par de preguntas a
|
| 9 |
+
lo largo de la clase
|
| 10 |
+
|
| 11 |
+
00:08.500 --> 00:13.700
|
| 12 |
+
para que, porfa, me vayas colocando lo que
|
| 13 |
+
consideres en la cajita de los comentarios.
|
| 14 |
+
|
| 15 |
+
00:13.700 --> 00:18.500
|
| 16 |
+
Me encantaría saber cuáles son esas
|
| 17 |
+
consideraciones que tienes a lo largo de estas preguntas.
|
| 18 |
+
|
| 19 |
+
00:18.500 --> 00:22.800
|
| 20 |
+
Entonces, vamos a comenzar primero con lo
|
| 21 |
+
que son las funciones puras.
|
| 22 |
+
|
| 23 |
+
00:22.800 --> 00:25.900
|
| 24 |
+
Voy a colocar por acá funciones puras.
|
| 25 |
+
|
| 26 |
+
00:25.900 --> 00:31.900
|
| 27 |
+
Algo importante de estas funciones es que
|
| 28 |
+
tienen dos características súper fundamentales.
|
| 29 |
+
|
| 30 |
+
00:31.900 --> 00:39.900
|
| 31 |
+
La primera, por supuesto, es que, dada una
|
| 32 |
+
misma entrada, vamos a obtener siempre la misma salida.
|
| 33 |
+
|
| 34 |
+
00:39.900 --> 00:43.400
|
| 35 |
+
Esto es muy característico de estas funciones.
|
| 36 |
+
|
| 37 |
+
00:43.400 --> 00:47.900
|
| 38 |
+
Y, por otro lado, es que no producen
|
| 39 |
+
efectos secundarios.
|
| 40 |
+
|
| 41 |
+
00:47.900 --> 00:49.900
|
| 42 |
+
¿Eso qué quiere
|
| 43 |
+
decir?
|
| 44 |
+
|
| 45 |
+
00:49.900 --> 00:54.900
|
| 46 |
+
Bueno, resulta que nosotros tenemos
|
| 47 |
+
ciertas formas de escribir nuestro código.
|
| 48 |
+
|
| 49 |
+
00:54.900 --> 00:57.400
|
| 50 |
+
Ya te voy a decir cuáles son esas ciertas
|
| 51 |
+
formas
|
| 52 |
+
|
| 53 |
+
00:57.400 --> 01:01.900
|
| 54 |
+
que hacen que nuestro código sea diferente
|
| 55 |
+
a lo largo del tiempo.
|
| 56 |
+
|
| 57 |
+
01:01.900 --> 01:07.400
|
| 58 |
+
O que, inclusive, manipulemos ciertas
|
| 59 |
+
cosas y que eviten que nuestra función siga siendo pura,
|
| 60 |
+
|
| 61 |
+
01:07.400 --> 01:10.400
|
| 62 |
+
o que siga siendo con la misma entrada y
|
| 63 |
+
la misma salida.
|
| 64 |
+
|
| 65 |
+
01:10.400 --> 01:15.900
|
| 66 |
+
A eso es lo que le consideramos con el
|
| 67 |
+
nombre de efectos secundarios o side effects en inglés.
|
| 68 |
+
|
| 69 |
+
01:15.900 --> 01:19.400
|
| 70 |
+
Eso también es muy conocido en el mundo de
|
| 71 |
+
la programación.
|
| 72 |
+
|
| 73 |
+
01:19.400 --> 01:22.400
|
| 74 |
+
Y lo vas a estar escuchando también
|
| 75 |
+
constantemente.
|
| 76 |
+
|
| 77 |
+
01:22.400 --> 01:27.400
|
| 78 |
+
¿Cuáles son esas ciertas cosas que
|
| 79 |
+
hablábamos ahorita o esos efectos secundarios?
|
| 80 |
+
|
| 81 |
+
01:27.400 --> 01:29.900
|
| 82 |
+
Bueno, vamos a escribir algunos por acá.
|
| 83 |
+
|
| 84 |
+
01:29.900 --> 01:32.400
|
| 85 |
+
Voy a colocar side
|
| 86 |
+
effects.
|
| 87 |
+
|
| 88 |
+
01:32.400 --> 01:35.400
|
| 89 |
+
Y entre ellos vamos a
|
| 90 |
+
encontrar...
|
| 91 |
+
|
| 92 |
+
01:35.400 --> 01:38.900
|
| 93 |
+
El primero es modificar variables globales.
|
| 94 |
+
|
| 95 |
+
01:38.900 --> 01:44.400
|
| 96 |
+
Todo eso que sea acceder a otras variables
|
| 97 |
+
que tengamos en nuestro código dentro de una función,
|
| 98 |
+
|
| 99 |
+
01:44.400 --> 01:48.400
|
| 100 |
+
va a hacer, por supuesto, que ya nuestra
|
| 101 |
+
función no sea pura.
|
| 102 |
+
|
| 103 |
+
01:48.400 --> 01:49.900
|
| 104 |
+
Entonces vamos a
|
| 105 |
+
colocarlo.
|
| 106 |
+
|
| 107 |
+
01:49.900 --> 01:53.400
|
| 108 |
+
Modificar variables
|
| 109 |
+
globales.
|
| 110 |
+
|
| 111 |
+
01:54.900 --> 01:59.900
|
| 112 |
+
Por otro lado, tenemos lo que es modificar
|
| 113 |
+
los parámetros de una función.
|
| 114 |
+
|
| 115 |
+
01:59.900 --> 02:02.900
|
| 116 |
+
Eso también nos causa un side effect.
|
| 117 |
+
|
| 118 |
+
02:02.900 --> 02:06.400
|
| 119 |
+
Entonces voy a colocar modificar parámetros.
|
| 120 |
+
|
| 121 |
+
02:06.400 --> 02:10.900
|
| 122 |
+
Por otro lado, tendríamos lo que es las
|
| 123 |
+
solicitudes HTTP.
|
| 124 |
+
|
| 125 |
+
02:10.900 --> 02:14.400
|
| 126 |
+
Es decir, todo lo que sean llamados a APIs,
|
| 127 |
+
|
| 128 |
+
02:14.400 --> 02:16.900
|
| 129 |
+
también nos va a causar un efecto secundario.
|
| 130 |
+
|
| 131 |
+
02:16.900 --> 02:21.400
|
| 132 |
+
Entonces vamos a colocarlo, tres llamados
|
| 133 |
+
a APIs,
|
| 134 |
+
|
| 135 |
+
02:21.400 --> 02:23.900
|
| 136 |
+
o
|
| 137 |
+
llamados...
|
| 138 |
+
|
| 139 |
+
02:23.900 --> 02:26.900
|
| 140 |
+
HTTP puede ser, o solicitudes, más fácil.
|
| 141 |
+
|
| 142 |
+
02:26.900 --> 02:30.900
|
| 143 |
+
Solicitudes
|
| 144 |
+
HTTP.
|
| 145 |
+
|
| 146 |
+
02:32.900 --> 02:36.900
|
| 147 |
+
Por otro lado, tendríamos lo que es
|
| 148 |
+
imprimir mensajes,
|
| 149 |
+
|
| 150 |
+
02:36.900 --> 02:40.400
|
| 151 |
+
tanto en la pantalla como en nuestro mismo
|
| 152 |
+
código.
|
| 153 |
+
|
| 154 |
+
02:40.400 --> 02:44.900
|
| 155 |
+
Eso también lo hemos conocido con console.
|
| 156 |
+
log o incluso alert,
|
| 157 |
+
|
| 158 |
+
02:44.900 --> 02:47.900
|
| 159 |
+
que también lo podemos utilizar para
|
| 160 |
+
imprimir mensajes.
|
| 161 |
+
|
| 162 |
+
02:47.900 --> 02:51.900
|
| 163 |
+
Entonces vamos a colocar todo lo que sea
|
| 164 |
+
imprimir mensajes
|
| 165 |
+
|
| 166 |
+
02:51.900 --> 02:55.900
|
| 167 |
+
en pantalla o en
|
| 168 |
+
consola.
|
| 169 |
+
|
| 170 |
+
02:56.900 --> 03:01.400
|
| 171 |
+
El número cinco sería todo lo que sea
|
| 172 |
+
manipulación del DOM.
|
| 173 |
+
|
| 174 |
+
03:01.400 --> 03:05.400
|
| 175 |
+
Entonces si vamos a acceder o hacer alguna
|
| 176 |
+
consulta,
|
| 177 |
+
|
| 178 |
+
03:05.400 --> 03:07.900
|
| 179 |
+
eso también sería un side
|
| 180 |
+
effect.
|
| 181 |
+
|
| 182 |
+
03:07.900 --> 03:11.900
|
| 183 |
+
Manipulación del
|
| 184 |
+
DOM.
|
| 185 |
+
|
| 186 |
+
03:11.900 --> 03:16.900
|
| 187 |
+
Y por último, también tendríamos lo que es
|
| 188 |
+
acceder a la hora,
|
| 189 |
+
|
| 190 |
+
03:16.900 --> 03:19.400
|
| 191 |
+
o al día, ese tipo de cosas también.
|
| 192 |
+
|
| 193 |
+
03:19.400 --> 03:21.400
|
| 194 |
+
Entonces vamos a colocarlo
|
| 195 |
+
acá,
|
| 196 |
+
|
| 197 |
+
03:21.400 --> 03:25.400
|
| 198 |
+
obtener la hora actual, por ejemplo.
|
| 199 |
+
|
| 200 |
+
03:25.400 --> 03:28.900
|
| 201 |
+
Entonces, todo esto nos produce side effects,
|
| 202 |
+
|
| 203 |
+
03:28.900 --> 03:31.900
|
| 204 |
+
o efectos secundarios, que por supuesto,
|
| 205 |
+
|
| 206 |
+
03:31.900 --> 03:35.400
|
| 207 |
+
hacen que nuestras funciones puras dejen
|
| 208 |
+
de ser puras.
|
| 209 |
+
|
| 210 |
+
03:35.400 --> 03:38.900
|
| 211 |
+
Sin embargo, esos side effects o efectos
|
| 212 |
+
secundarios
|
| 213 |
+
|
| 214 |
+
03:38.900 --> 03:42.900
|
| 215 |
+
no quiere decir que sea algo malo, por el
|
| 216 |
+
contrario.
|
| 217 |
+
|
| 218 |
+
03:42.900 --> 03:45.400
|
| 219 |
+
Muchos de ellos también son necesarios.
|
| 220 |
+
|
| 221 |
+
03:45.400 --> 03:47.900
|
| 222 |
+
Si estamos haciendo debugging en nuestro
|
| 223 |
+
código,
|
| 224 |
+
|
| 225 |
+
03:47.900 --> 03:51.400
|
| 226 |
+
por supuesto colocar algún mensaje en
|
| 227 |
+
pantalla o en consola
|
| 228 |
+
|
| 229 |
+
03:51.400 --> 03:53.400
|
| 230 |
+
va a ser súper
|
| 231 |
+
necesario.
|
| 232 |
+
|
| 233 |
+
03:53.400 --> 03:57.400
|
| 234 |
+
Solicitudes HTTP también es algo que hace
|
| 235 |
+
parte del día a día,
|
| 236 |
+
|
| 237 |
+
03:57.400 --> 04:00.400
|
| 238 |
+
por supuesto, inclusive para
|
| 239 |
+
desarrolladores frontends.
|
| 240 |
+
|
| 241 |
+
04:00.400 --> 04:02.400
|
| 242 |
+
Modificar
|
| 243 |
+
parámetros.
|
| 244 |
+
|
| 245 |
+
04:02.400 --> 04:05.400
|
| 246 |
+
Hay muchas de estas side effects que no
|
| 247 |
+
son malos,
|
| 248 |
+
|
| 249 |
+
04:05.400 --> 04:09.400
|
| 250 |
+
simplemente hacen que estas funciones
|
| 251 |
+
dejen de ser puras.
|
| 252 |
+
|
| 253 |
+
04:09.400 --> 04:12.900
|
| 254 |
+
Entonces, por otro lado, vamos a revisar,
|
| 255 |
+
entonces,
|
| 256 |
+
|
| 257 |
+
04:12.900 --> 04:15.900
|
| 258 |
+
cómo sería la estructura de una función pura.
|
| 259 |
+
|
| 260 |
+
04:15.900 --> 04:21.400
|
| 261 |
+
Para eso vamos a escribir una función de suma,
|
| 262 |
+
por ejemplo,
|
| 263 |
+
|
| 264 |
+
04:21.400 --> 04:23.400
|
| 265 |
+
vamos a escribirlo en
|
| 266 |
+
inglés,
|
| 267 |
+
|
| 268 |
+
04:23.400 --> 04:25.900
|
| 269 |
+
y vamos a colocar unos
|
| 270 |
+
parámetros.
|
| 271 |
+
|
| 272 |
+
04:25.900 --> 04:28.400
|
| 273 |
+
Puede ser de la suma de dos números.
|
| 274 |
+
|
| 275 |
+
04:28.400 --> 04:30.900
|
| 276 |
+
Entonces coloquemos, por ejemplo, a y b.
|
| 277 |
+
|
| 278 |
+
04:30.900 --> 04:32.400
|
| 279 |
+
¿Y qué nos va a
|
| 280 |
+
retornar?
|
| 281 |
+
|
| 282 |
+
04:32.400 --> 04:35.900
|
| 283 |
+
Pues, por supuesto, la suma de a y b.
|
| 284 |
+
|
| 285 |
+
04:35.900 --> 04:39.400
|
| 286 |
+
Esta función, por supuesto, es una función
|
| 287 |
+
pura
|
| 288 |
+
|
| 289 |
+
04:39.400 --> 04:42.900
|
| 290 |
+
porque siempre vamos a recibir los mismos
|
| 291 |
+
parámetros,
|
| 292 |
+
|
| 293 |
+
04:42.900 --> 04:44.900
|
| 294 |
+
es decir, la misma
|
| 295 |
+
entrada,
|
| 296 |
+
|
| 297 |
+
04:44.900 --> 04:47.400
|
| 298 |
+
y siempre también vamos a obtener la misma
|
| 299 |
+
salida.
|
| 300 |
+
|
| 301 |
+
04:47.400 --> 04:50.400
|
| 302 |
+
Por más de que nosotros cambiemos, en fin,
|
| 303 |
+
|
| 304 |
+
04:50.400 --> 04:52.400
|
| 305 |
+
siempre va a ser exactamente lo mismo,
|
| 306 |
+
|
| 307 |
+
04:52.400 --> 04:53.900
|
| 308 |
+
y como podemos
|
| 309 |
+
observar,
|
| 310 |
+
|
| 311 |
+
04:53.900 --> 04:56.900
|
| 312 |
+
no tenemos modificación de variables globales,
|
| 313 |
+
|
| 314 |
+
04:56.900 --> 04:59.400
|
| 315 |
+
modificación de parámetros, solicitudes,
|
| 316 |
+
en fin,
|
| 317 |
+
|
| 318 |
+
04:59.400 --> 05:01.400
|
| 319 |
+
no cumplimos con estas
|
| 320 |
+
condiciones,
|
| 321 |
+
|
| 322 |
+
05:01.400 --> 05:03.400
|
| 323 |
+
así que por esa
|
| 324 |
+
razón
|
| 325 |
+
|
| 326 |
+
05:03.400 --> 05:06.400
|
| 327 |
+
vemos que esta función es una función pura.
|
| 328 |
+
|
| 329 |
+
05:06.400 --> 05:09.900
|
| 330 |
+
Ahora, pregunta, ¿qué
|
| 331 |
+
pasaría
|
| 332 |
+
|
| 333 |
+
05:09.900 --> 05:13.400
|
| 334 |
+
si nosotros colocamos esta función por
|
| 335 |
+
aquí abajo
|
| 336 |
+
|
| 337 |
+
05:13.400 --> 05:16.400
|
| 338 |
+
y le colocamos un
|
| 339 |
+
console.log
|
| 340 |
+
|
| 341 |
+
05:16.400 --> 05:20.400
|
| 342 |
+
y decimos, ah, bueno, es que yo quiero
|
| 343 |
+
saber qué es a.
|
| 344 |
+
|
| 345 |
+
05:20.400 --> 05:22.400
|
| 346 |
+
Tenemos ese
|
| 347 |
+
console.log.
|
| 348 |
+
|
| 349 |
+
05:22.400 --> 05:24.400
|
| 350 |
+
¿Ahí la función es
|
| 351 |
+
pura?
|
| 352 |
+
|
| 353 |
+
05:24.400 --> 05:26.900
|
| 354 |
+
Porque estamos modificando una función que
|
| 355 |
+
es pura,
|
| 356 |
+
|
| 357 |
+
05:26.900 --> 05:28.900
|
| 358 |
+
le estamos colocando el console.log.
|
| 359 |
+
|
| 360 |
+
05:28.900 --> 05:31.400
|
| 361 |
+
¿Es pura o en este caso ya es
|
| 362 |
+
impura?
|
| 363 |
+
|
| 364 |
+
05:31.400 --> 05:33.900
|
| 365 |
+
Cuéntame, por favor, en los comentarios.
|
| 366 |
+
|
| 367 |
+
05:33.900 --> 05:36.900
|
| 368 |
+
Bueno, en este caso, ya lo que hacemos es,
|
| 369 |
+
|
| 370 |
+
05:36.900 --> 05:38.900
|
| 371 |
+
voy a copiarme este
|
| 372 |
+
título,
|
| 373 |
+
|
| 374 |
+
05:38.900 --> 05:41.400
|
| 375 |
+
y vamos a copiarlo por
|
| 376 |
+
acá,
|
| 377 |
+
|
| 378 |
+
05:41.400 --> 05:44.400
|
| 379 |
+
y decimos que esta función ya no es pura.
|
| 380 |
+
|
| 381 |
+
05:44.400 --> 05:46.900
|
| 382 |
+
Es una función impura
|
| 383 |
+
precisamente
|
| 384 |
+
|
| 385 |
+
05:46.900 --> 05:50.400
|
| 386 |
+
porque estamos teniendo aquí un efecto
|
| 387 |
+
secundario,
|
| 388 |
+
|
| 389 |
+
05:50.400 --> 05:52.400
|
| 390 |
+
como vemos por
|
| 391 |
+
acá,
|
| 392 |
+
|
| 393 |
+
05:52.400 --> 05:55.400
|
| 394 |
+
imprimir mensajes en la pantalla o en la
|
| 395 |
+
consola
|
| 396 |
+
|
| 397 |
+
05:55.400 --> 05:57.900
|
| 398 |
+
nos produce, por supuesto, esos side effects,
|
| 399 |
+
|
| 400 |
+
05:57.900 --> 06:00.400
|
| 401 |
+
y ya tendríamos, por
|
| 402 |
+
supuesto,
|
| 403 |
+
|
| 404 |
+
06:00.400 --> 06:02.400
|
| 405 |
+
una modificación de nuestra función
|
| 406 |
+
pura
|
| 407 |
+
|
| 408 |
+
06:02.400 --> 06:04.900
|
| 409 |
+
y deja de serlo
|
| 410 |
+
inmediatamente.
|
| 411 |
+
|
| 412 |
+
06:05.900 --> 06:07.900
|
| 413 |
+
Otro ejemplo muy
|
| 414 |
+
común,
|
| 415 |
+
|
| 416 |
+
06:07.900 --> 06:10.900
|
| 417 |
+
también de las funciones que son impuras,
|
| 418 |
+
|
| 419 |
+
06:10.900 --> 06:13.900
|
| 420 |
+
es modificar una variable que sea global,
|
| 421 |
+
|
| 422 |
+
06:13.900 --> 06:15.900
|
| 423 |
+
como lo vemos en este primer
|
| 424 |
+
caso
|
| 425 |
+
|
| 426 |
+
06:15.900 --> 06:17.900
|
| 427 |
+
que dice modificar variables globales.
|
| 428 |
+
|
| 429 |
+
06:17.900 --> 06:19.900
|
| 430 |
+
¿Cómo es en este
|
| 431 |
+
caso?
|
| 432 |
+
|
| 433 |
+
06:19.900 --> 06:22.400
|
| 434 |
+
Si tuviéramos, por ejemplo, un contador,
|
| 435 |
+
|
| 436 |
+
06:22.400 --> 06:24.900
|
| 437 |
+
entonces,
|
| 438 |
+
counter,
|
| 439 |
+
|
| 440 |
+
06:24.900 --> 06:27.900
|
| 441 |
+
si tuviéramos, por ejemplo, una
|
| 442 |
+
variable
|
| 443 |
+
|
| 444 |
+
06:27.900 --> 06:29.900
|
| 445 |
+
que se llame
|
| 446 |
+
total,
|
| 447 |
+
|
| 448 |
+
06:29.900 --> 06:32.400
|
| 449 |
+
y ese total sea
|
| 450 |
+
cero,
|
| 451 |
+
|
| 452 |
+
06:32.400 --> 06:34.900
|
| 453 |
+
¿qué es lo que queremos en este
|
| 454 |
+
caso?
|
| 455 |
+
|
| 456 |
+
06:34.900 --> 06:36.900
|
| 457 |
+
Tener ese total
|
| 458 |
+
inicial,
|
| 459 |
+
|
| 460 |
+
06:36.900 --> 06:39.900
|
| 461 |
+
es decir, estamos inicializando una variable,
|
| 462 |
+
|
| 463 |
+
06:39.900 --> 06:41.900
|
| 464 |
+
pero posteriormente, con el
|
| 465 |
+
tiempo,
|
| 466 |
+
|
| 467 |
+
06:41.900 --> 06:44.900
|
| 468 |
+
queremos que, dependiendo de nuestra
|
| 469 |
+
función
|
| 470 |
+
|
| 471 |
+
06:44.900 --> 06:47.900
|
| 472 |
+
o dependiendo de ciertas cosas que sucedan
|
| 473 |
+
allá adentro,
|
| 474 |
+
|
| 475 |
+
06:47.900 --> 06:49.900
|
| 476 |
+
ese total sea diferente o
|
| 477 |
+
cambie.
|
| 478 |
+
|
| 479 |
+
06:49.900 --> 06:51.900
|
| 480 |
+
Entonces, ¿cómo se vería
|
| 481 |
+
eso?
|
| 482 |
+
|
| 483 |
+
06:51.900 --> 06:53.900
|
| 484 |
+
Sería, por ejemplo,
|
| 485 |
+
function,
|
| 486 |
+
|
| 487 |
+
06:53.900 --> 06:56.900
|
| 488 |
+
podríamos colocar una
|
| 489 |
+
suma
|
| 490 |
+
|
| 491 |
+
06:56.900 --> 06:58.900
|
| 492 |
+
con un side
|
| 493 |
+
effect.
|
| 494 |
+
|
| 495 |
+
06:58.900 --> 07:00.900
|
| 496 |
+
Entonces, vamos a colocarle
|
| 497 |
+
así.
|
| 498 |
+
|
| 499 |
+
07:00.900 --> 07:03.900
|
| 500 |
+
Y, por dentro, lo que hacemos es
|
| 501 |
+
decir
|
| 502 |
+
|
| 503 |
+
07:03.900 --> 07:08.900
|
| 504 |
+
que total va a ser lo que había antes en
|
| 505 |
+
total,
|
| 506 |
+
|
| 507 |
+
07:08.900 --> 07:11.900
|
| 508 |
+
más la suma de, puede ser un
|
| 509 |
+
parámetro
|
| 510 |
+
|
| 511 |
+
07:11.900 --> 07:13.900
|
| 512 |
+
que le agreguemos
|
| 513 |
+
acá.
|
| 514 |
+
|
| 515 |
+
07:13.900 --> 07:16.900
|
| 516 |
+
Entonces, digamos que esto es más igual,
|
| 517 |
+
|
| 518 |
+
07:16.900 --> 07:19.900
|
| 519 |
+
ahí lo que estamos haciendo es
|
| 520 |
+
diciéndole
|
| 521 |
+
|
| 522 |
+
07:19.900 --> 07:23.900
|
| 523 |
+
algo parecido a igual a total más a,
|
| 524 |
+
|
| 525 |
+
07:23.900 --> 07:25.900
|
| 526 |
+
pero en vez de hacer
|
| 527 |
+
esto,
|
| 528 |
+
|
| 529 |
+
07:25.900 --> 07:27.900
|
| 530 |
+
lo que podemos también hacer en
|
| 531 |
+
JavaScript
|
| 532 |
+
|
| 533 |
+
07:27.900 --> 07:29.900
|
| 534 |
+
es decir total más
|
| 535 |
+
igual,
|
| 536 |
+
|
| 537 |
+
07:29.900 --> 07:32.900
|
| 538 |
+
y nos ahorramos tener que volver a
|
| 539 |
+
escribir total
|
| 540 |
+
|
| 541 |
+
07:32.900 --> 07:34.900
|
| 542 |
+
y solamente decir
|
| 543 |
+
a.
|
| 544 |
+
|
| 545 |
+
07:34.900 --> 07:36.900
|
| 546 |
+
Entonces, voy a quitar esta de aquí arriba,
|
| 547 |
+
|
| 548 |
+
07:36.900 --> 07:39.900
|
| 549 |
+
y esta a la pasamos como
|
| 550 |
+
parámetro.
|
| 551 |
+
|
| 552 |
+
07:39.900 --> 07:41.900
|
| 553 |
+
Entonces, aquí ya tenemos nuestra
|
| 554 |
+
función
|
| 555 |
+
|
| 556 |
+
07:41.900 --> 07:45.900
|
| 557 |
+
y retornamos, por ejemplo, el total.
|
| 558 |
+
|
| 559 |
+
07:45.900 --> 07:47.900
|
| 560 |
+
Este es un caso muy común
|
| 561 |
+
también
|
| 562 |
+
|
| 563 |
+
07:47.900 --> 07:50.900
|
| 564 |
+
de poder manipular o de
|
| 565 |
+
tener,
|
| 566 |
+
|
| 567 |
+
07:50.900 --> 07:53.900
|
| 568 |
+
obtener funciones que son
|
| 569 |
+
impuras.
|
| 570 |
+
|
| 571 |
+
07:53.900 --> 07:56.900
|
| 572 |
+
Tenemos total, que es una variable global,
|
| 573 |
+
|
| 574 |
+
07:56.900 --> 08:00.900
|
| 575 |
+
y conforme vayamos trabajando en nuestra
|
| 576 |
+
función,
|
| 577 |
+
|
| 578 |
+
08:00.900 --> 08:03.900
|
| 579 |
+
vamos a ir modificando esa variable que es
|
| 580 |
+
global.
|
| 581 |
+
|
| 582 |
+
08:03.900 --> 08:06.900
|
| 583 |
+
Entonces, ahí tenemos ese ejemplo
|
| 584 |
+
justamente
|
| 585 |
+
|
| 586 |
+
08:06.900 --> 08:08.900
|
| 587 |
+
de función
|
| 588 |
+
impura.
|
| 589 |
+
|
| 590 |
+
08:08.900 --> 08:10.900
|
| 591 |
+
Ahora, veamos otro
|
| 592 |
+
ejemplo.
|
| 593 |
+
|
| 594 |
+
08:10.900 --> 08:13.900
|
| 595 |
+
Me vas a contar esta función para ti,
|
| 596 |
+
¿qué es?
|
| 597 |
+
|
| 598 |
+
08:13.900 --> 08:15.900
|
| 599 |
+
Vamos a colocar
|
| 600 |
+
function,
|
| 601 |
+
|
| 602 |
+
08:15.900 --> 08:18.900
|
| 603 |
+
square, que es como
|
| 604 |
+
cuadrado.
|
| 605 |
+
|
| 606 |
+
08:18.900 --> 08:20.900
|
| 607 |
+
Le vamos a colocar un
|
| 608 |
+
parámetro,
|
| 609 |
+
|
| 610 |
+
08:20.900 --> 08:23.900
|
| 611 |
+
y dentro vamos a decir que vamos a
|
| 612 |
+
retornar
|
| 613 |
+
|
| 614 |
+
08:23.900 --> 08:26.900
|
| 615 |
+
x por
|
| 616 |
+
x.
|
| 617 |
+
|
| 618 |
+
08:26.900 --> 08:28.900
|
| 619 |
+
Vamos a colocarle un espacio entre ambas.
|
| 620 |
+
|
| 621 |
+
08:28.900 --> 08:29.900
|
| 622 |
+
¿Para ti qué
|
| 623 |
+
es?
|
| 624 |
+
|
| 625 |
+
08:29.900 --> 08:32.900
|
| 626 |
+
¿Una función pura o una función
|
| 627 |
+
impura?
|
| 628 |
+
|
| 629 |
+
08:32.900 --> 08:34.900
|
| 630 |
+
Bueno, voy a colocar por aquí el resultado.
|
| 631 |
+
|
| 632 |
+
08:34.900 --> 08:37.900
|
| 633 |
+
Esta es una función
|
| 634 |
+
pura,
|
| 635 |
+
|
| 636 |
+
08:37.900 --> 08:40.900
|
| 637 |
+
porque tenemos solamente nuestro parámetro,
|
| 638 |
+
|
| 639 |
+
08:40.900 --> 08:42.900
|
| 640 |
+
nuestra entrada, y la
|
| 641 |
+
salida
|
| 642 |
+
|
| 643 |
+
08:42.900 --> 08:45.900
|
| 644 |
+
siempre va a ser exactamente la misma,
|
| 645 |
+
|
| 646 |
+
08:45.900 --> 08:47.900
|
| 647 |
+
sin efectos
|
| 648 |
+
secundarios.
|
| 649 |
+
|
| 650 |
+
08:47.900 --> 08:50.900
|
| 651 |
+
Ahora, si tuviéramos, por ejemplo, function,
|
| 652 |
+
|
| 653 |
+
08:50.900 --> 08:53.900
|
| 654 |
+
a esta le vamos a decir
|
| 655 |
+
attain,
|
| 656 |
+
|
| 657 |
+
08:53.900 --> 08:56.900
|
| 658 |
+
y vamos a enviarle un
|
| 659 |
+
parámetro,
|
| 660 |
+
|
| 661 |
+
08:56.900 --> 08:58.900
|
| 662 |
+
y por dentro lo que vamos a hacer
|
| 663 |
+
es
|
| 664 |
+
|
| 665 |
+
08:58.900 --> 09:02.900
|
| 666 |
+
return y más
|
| 667 |
+
10.
|
| 668 |
+
|
| 669 |
+
09:02.900 --> 09:06.900
|
| 670 |
+
¿Esta qué es? ¿Una función pura o es una
|
| 671 |
+
función impura?
|
| 672 |
+
|
| 673 |
+
09:06.900 --> 09:09.900
|
| 674 |
+
Bueno, en este caso la voy a seguir
|
| 675 |
+
dejando
|
| 676 |
+
|
| 677 |
+
09:09.900 --> 09:11.900
|
| 678 |
+
en esta categoría de función
|
| 679 |
+
pura,
|
| 680 |
+
|
| 681 |
+
09:11.900 --> 09:12.900
|
| 682 |
+
porque también lo
|
| 683 |
+
es.
|
| 684 |
+
|
| 685 |
+
09:12.900 --> 09:16.900
|
| 686 |
+
Tenemos las mismas entradas con la misma
|
| 687 |
+
salida.
|
| 688 |
+
|
| 689 |
+
09:16.900 --> 09:20.900
|
| 690 |
+
Ahora, ¿qué pasaría si nosotros
|
| 691 |
+
tuviéramos
|
| 692 |
+
|
| 693 |
+
09:20.900 --> 09:23.900
|
| 694 |
+
la combinación de dos funciones
|
| 695 |
+
puras?
|
| 696 |
+
|
| 697 |
+
09:23.900 --> 09:26.900
|
| 698 |
+
Es decir, ¿qué pasaría si tuviéramos,
|
| 699 |
+
por ejemplo,
|
| 700 |
+
|
| 701 |
+
09:26.900 --> 09:33.900
|
| 702 |
+
const number igual a
|
| 703 |
+
5,
|
| 704 |
+
|
| 705 |
+
09:33.900 --> 09:38.900
|
| 706 |
+
y también tuviéramos const final result,
|
| 707 |
+
|
| 708 |
+
09:38.900 --> 09:44.900
|
| 709 |
+
que va a ser igual a quién? Va a ser igual
|
| 710 |
+
a attain,
|
| 711 |
+
|
| 712 |
+
09:44.900 --> 09:49.900
|
| 713 |
+
y vamos a decirle que este attain como
|
| 714 |
+
parámetro
|
| 715 |
+
|
| 716 |
+
09:49.900 --> 09:52.900
|
| 717 |
+
va a recibir square
|
| 718 |
+
x,
|
| 719 |
+
|
| 720 |
+
09:52.900 --> 09:54.900
|
| 721 |
+
entonces vamos a colocarle por
|
| 722 |
+
acá,
|
| 723 |
+
|
| 724 |
+
09:54.900 --> 09:56.900
|
| 725 |
+
esto es una combinación que
|
| 726 |
+
también
|
| 727 |
+
|
| 728 |
+
09:56.900 --> 09:58.900
|
| 729 |
+
es muy interesante
|
| 730 |
+
revisar,
|
| 731 |
+
|
| 732 |
+
09:58.900 --> 10:01.900
|
| 733 |
+
y le ponemos como parámetro a square,
|
| 734 |
+
|
| 735 |
+
10:01.900 --> 10:03.900
|
| 736 |
+
porque él tiene que recibir un número,
|
| 737 |
+
|
| 738 |
+
10:03.900 --> 10:05.900
|
| 739 |
+
le vamos a decir qué
|
| 740 |
+
es,
|
| 741 |
+
|
| 742 |
+
10:05.900 --> 10:08.900
|
| 743 |
+
por supuesto, el nombre que acabamos de
|
| 744 |
+
escribir.
|
| 745 |
+
|
| 746 |
+
10:08.900 --> 10:11.900
|
| 747 |
+
Entonces aquí tenemos la combinación de
|
| 748 |
+
estas dos.
|
| 749 |
+
|
| 750 |
+
10:11.900 --> 10:14.900
|
| 751 |
+
Vamos a colocar un
|
| 752 |
+
console.log
|
| 753 |
+
|
| 754 |
+
10:14.900 --> 10:16.900
|
| 755 |
+
para revisar esto que acabamos de hacer,
|
| 756 |
+
|
| 757 |
+
10:16.900 --> 10:19.900
|
| 758 |
+
le vamos a decir final
|
| 759 |
+
result,
|
| 760 |
+
|
| 761 |
+
10:19.900 --> 10:23.900
|
| 762 |
+
vamos a, esperemos a que no me salga algún
|
| 763 |
+
error
|
| 764 |
+
|
| 765 |
+
10:23.900 --> 10:25.900
|
| 766 |
+
de pronto por algo que escribimos
|
| 767 |
+
anteriormente,
|
| 768 |
+
|
| 769 |
+
10:25.900 --> 10:28.900
|
| 770 |
+
entonces vamos a escribir acá, y listo.
|
| 771 |
+
|
| 772 |
+
10:28.900 --> 10:32.900
|
| 773 |
+
Miren que aquí el resultado es
|
| 774 |
+
35.
|
| 775 |
+
|
| 776 |
+
10:32.900 --> 10:34.900
|
| 777 |
+
Muy bien, ahí nos funcionó nuestra súper
|
| 778 |
+
combinación.
|
| 779 |
+
|
| 780 |
+
10:34.900 --> 10:38.900
|
| 781 |
+
Pero lo importante aquí es revisar lo
|
| 782 |
+
siguiente,
|
| 783 |
+
|
| 784 |
+
10:38.900 --> 10:41.900
|
| 785 |
+
tenemos función pura, función
|
| 786 |
+
pura,
|
| 787 |
+
|
| 788 |
+
10:41.900 --> 10:46.900
|
| 789 |
+
pero acá tenemos la combinación de dos
|
| 790 |
+
funciones puras.
|
| 791 |
+
|
| 792 |
+
10:46.900 --> 10:49.900
|
| 793 |
+
¿Esto qué es? ¿Una función
|
| 794 |
+
impura
|
| 795 |
+
|
| 796 |
+
10:49.900 --> 10:51.900
|
| 797 |
+
o sigue siendo una función
|
| 798 |
+
pura?
|
| 799 |
+
|
| 800 |
+
10:51.900 --> 10:54.900
|
| 801 |
+
¿Tú qué crees? Cuéntame en los comentarios.
|
| 802 |
+
|
| 803 |
+
10:54.900 --> 10:58.900
|
| 804 |
+
Bueno, la respuesta es que
|
| 805 |
+
independientemente de esto,
|
| 806 |
+
|
| 807 |
+
10:58.900 --> 11:00.900
|
| 808 |
+
esto sigue siendo una función
|
| 809 |
+
pura.
|
| 810 |
+
|
| 811 |
+
11:00.900 --> 11:03.900
|
| 812 |
+
Entonces es muy interesante también
|
| 813 |
+
revisar esos casos,
|
| 814 |
+
|
| 815 |
+
11:03.900 --> 11:06.900
|
| 816 |
+
y que siempre tengamos en cuenta
|
| 817 |
+
simplemente
|
| 818 |
+
|
| 819 |
+
11:06.900 --> 11:08.900
|
| 820 |
+
estas reglas que acabamos de escribir.
|
| 821 |
+
|
| 822 |
+
11:08.900 --> 11:10.900
|
| 823 |
+
Si tienes side effects o
|
| 824 |
+
no,
|
| 825 |
+
|
| 826 |
+
11:10.900 --> 11:13.900
|
| 827 |
+
pues básicamente nos va a dar esa
|
| 828 |
+
ilusión
|
| 829 |
+
|
| 830 |
+
11:13.900 --> 11:16.900
|
| 831 |
+
o esa noción de que es una función impura,
|
| 832 |
+
|
| 833 |
+
11:16.900 --> 11:18.900
|
| 834 |
+
de lo contrario va a ser una función pura,
|
| 835 |
+
|
| 836 |
+
11:18.900 --> 11:20.900
|
| 837 |
+
también basada en esas
|
| 838 |
+
características
|
| 839 |
+
|
| 840 |
+
11:20.900 --> 11:34.900
|
| 841 |
+
que hablábamos al
|
| 842 |
+
principio.
|
| 843 |
+
|
subir/Curso de Fundamentos de JavaScript/03-Funciones y This/03-Lecturas recomendadas.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://github.com/platzi/basico-js
|
subir/Curso de Fundamentos de JavaScript/03-Funciones y This/03-Resumen.html
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
subir/Curso de Fundamentos de JavaScript/03-Funciones y This/03-clase-funciones-puras-e-impuras_e3c125f1-5bce-4b8b-a394-31d35f63fa55.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
// Funciones puras
|
| 2 |
+
|
| 3 |
+
// Side Effects
|
| 4 |
+
// 1. Modificar variables globales
|
| 5 |
+
// 2. Modificar parámetros
|
| 6 |
+
// 3. Solicitudes HTTP
|
| 7 |
+
// 4. Imprimir mensajes en pantalla o consola
|
| 8 |
+
// 5. Manipulación del DOM
|
| 9 |
+
// 6. Obtener la hora actual
|
| 10 |
+
|
| 11 |
+
function sum (a, b) {
|
| 12 |
+
return a + b
|
| 13 |
+
}
|
| 14 |
+
|
| 15 |
+
// Funciones impuras
|
| 16 |
+
|
| 17 |
+
function sum (a, b) {
|
| 18 |
+
console.log('A: ', a)
|
| 19 |
+
return a + b
|
| 20 |
+
}
|
| 21 |
+
|
| 22 |
+
let total = 0
|
| 23 |
+
|
| 24 |
+
function sumWithSideEffect (a) {
|
| 25 |
+
total += a
|
| 26 |
+
return total
|
| 27 |
+
}
|
| 28 |
+
|
| 29 |
+
// Función pura
|
| 30 |
+
|
| 31 |
+
function square(x) {
|
| 32 |
+
return x * x
|
| 33 |
+
}
|
| 34 |
+
|
| 35 |
+
function addTen (y) {
|
| 36 |
+
return y + 10
|
| 37 |
+
}
|
| 38 |
+
|
| 39 |
+
const number = 5
|
| 40 |
+
const finalResut = addTen(square(number))
|
| 41 |
+
console.log(finalResut)
|
subir/Curso de Fundamentos de JavaScript/03-Funciones y This/04-Arrow Functions y Enlace Léxico en JavaScript.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:7f56fbce4d80dbac7e7dc9bd7a7b68face38bc81527813dfa261d75f14c9be40
|
| 3 |
+
size 90119959
|
subir/Curso de Fundamentos de JavaScript/03-Funciones y This/04-Arrow Functions y Enlace Léxico en JavaScript.vtt
ADDED
|
@@ -0,0 +1,878 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:00.000 --> 00:03.300
|
| 4 |
+
En esta clase vamos a hablar sobre las
|
| 5 |
+
arrow functions
|
| 6 |
+
|
| 7 |
+
00:03.300 --> 00:06.000
|
| 8 |
+
y también sobre el lexical
|
| 9 |
+
binding.
|
| 10 |
+
|
| 11 |
+
00:06.000 --> 00:08.600
|
| 12 |
+
Para ello, es importante que tengamos en
|
| 13 |
+
cuenta
|
| 14 |
+
|
| 15 |
+
00:08.600 --> 00:11.800
|
| 16 |
+
esas funciones tradicionales que ya
|
| 17 |
+
debemos conocer,
|
| 18 |
+
|
| 19 |
+
00:11.800 --> 00:14.700
|
| 20 |
+
que son justamente como las que estás
|
| 21 |
+
viendo en pantalla.
|
| 22 |
+
|
| 23 |
+
00:14.700 --> 00:19.300
|
| 24 |
+
Tenemos una función, un nombre, unos
|
| 25 |
+
parámetros, un cuerpo,
|
| 26 |
+
|
| 27 |
+
00:19.300 --> 00:22.000
|
| 28 |
+
y también tenemos un llamado a esa función.
|
| 29 |
+
|
| 30 |
+
00:22.000 --> 00:23.800
|
| 31 |
+
Pero bueno, te estarás
|
| 32 |
+
preguntando
|
| 33 |
+
|
| 34 |
+
00:23.800 --> 00:26.200
|
| 35 |
+
por qué crear otro tipo de
|
| 36 |
+
funciones
|
| 37 |
+
|
| 38 |
+
00:26.200 --> 00:28.400
|
| 39 |
+
si ya tenemos este tipo de
|
| 40 |
+
funciones
|
| 41 |
+
|
| 42 |
+
00:28.400 --> 00:30.100
|
| 43 |
+
que estamos viendo en
|
| 44 |
+
pantalla.
|
| 45 |
+
|
| 46 |
+
00:30.100 --> 00:32.200
|
| 47 |
+
Pues bien, la razón principal
|
| 48 |
+
es,
|
| 49 |
+
|
| 50 |
+
00:32.200 --> 00:35.200
|
| 51 |
+
uno, para hacerlas un poco más cortas,
|
| 52 |
+
|
| 53 |
+
00:35.200 --> 00:38.200
|
| 54 |
+
y la segunda es para evitar todo este
|
| 55 |
+
tema
|
| 56 |
+
|
| 57 |
+
00:38.200 --> 00:40.200
|
| 58 |
+
del dist, del
|
| 59 |
+
contexto,
|
| 60 |
+
|
| 61 |
+
00:40.200 --> 00:42.900
|
| 62 |
+
para que no tengan ningún tipo de vinculación.
|
| 63 |
+
|
| 64 |
+
00:42.900 --> 00:46.300
|
| 65 |
+
Para ello, entonces, crearon las arrow
|
| 66 |
+
functions,
|
| 67 |
+
|
| 68 |
+
00:46.300 --> 00:48.200
|
| 69 |
+
que son estas que estás viendo
|
| 70 |
+
acá.
|
| 71 |
+
|
| 72 |
+
00:48.200 --> 00:50.600
|
| 73 |
+
Y algo muy característico
|
| 74 |
+
es,
|
| 75 |
+
|
| 76 |
+
00:50.600 --> 00:54.200
|
| 77 |
+
primero, ya quitamos lo que es la palabra
|
| 78 |
+
function
|
| 79 |
+
|
| 80 |
+
00:54.200 --> 00:57.200
|
| 81 |
+
y ya dejamos lo que es el const almuerzo,
|
| 82 |
+
|
| 83 |
+
00:57.200 --> 01:01.200
|
| 84 |
+
en este caso, que es netamente como una
|
| 85 |
+
variable.
|
| 86 |
+
|
| 87 |
+
01:01.200 --> 01:03.400
|
| 88 |
+
Luego siguen lo que son los parámetros,
|
| 89 |
+
|
| 90 |
+
01:03.400 --> 01:05.400
|
| 91 |
+
y seguido está una
|
| 92 |
+
flecha.
|
| 93 |
+
|
| 94 |
+
01:05.400 --> 01:08.700
|
| 95 |
+
Esa flecha es la que nos indica el return
|
| 96 |
+
o ya,
|
| 97 |
+
|
| 98 |
+
01:08.700 --> 01:12.000
|
| 99 |
+
lo que vamos a continuar viendo después de
|
| 100 |
+
las llaves,
|
| 101 |
+
|
| 102 |
+
01:12.000 --> 01:13.200
|
| 103 |
+
que es el
|
| 104 |
+
body.
|
| 105 |
+
|
| 106 |
+
01:13.200 --> 01:17.000
|
| 107 |
+
Y luego está nuevamente lo que es el
|
| 108 |
+
llamado de la función.
|
| 109 |
+
|
| 110 |
+
01:17.000 --> 01:19.000
|
| 111 |
+
Si ahorita estábamos
|
| 112 |
+
hablando
|
| 113 |
+
|
| 114 |
+
01:19.000 --> 01:22.000
|
| 115 |
+
de que podíamos reducir la cantidad de
|
| 116 |
+
líneas
|
| 117 |
+
|
| 118 |
+
01:22.000 --> 01:24.700
|
| 119 |
+
o de que fuera un poco más reducida esas
|
| 120 |
+
funciones,
|
| 121 |
+
|
| 122 |
+
01:24.700 --> 01:26.600
|
| 123 |
+
pues bueno, aquí no lo estamos viendo,
|
| 124 |
+
|
| 125 |
+
01:26.600 --> 01:28.100
|
| 126 |
+
ciertamente, como más
|
| 127 |
+
corta.
|
| 128 |
+
|
| 129 |
+
01:28.100 --> 01:30.400
|
| 130 |
+
Estamos viendo la misma cantidad de líneas.
|
| 131 |
+
|
| 132 |
+
01:30.400 --> 01:32.000
|
| 133 |
+
Entonces, lo que vamos a
|
| 134 |
+
hacer
|
| 135 |
+
|
| 136 |
+
01:32.000 --> 01:34.200
|
| 137 |
+
es que vamos a ir a nuestro editor de
|
| 138 |
+
código
|
| 139 |
+
|
| 140 |
+
01:34.200 --> 01:37.400
|
| 141 |
+
para compartirte, por supuesto, un montón
|
| 142 |
+
de datos curiosos
|
| 143 |
+
|
| 144 |
+
01:37.400 --> 01:40.600
|
| 145 |
+
y formas también de crear estas arrow
|
| 146 |
+
functions
|
| 147 |
+
|
| 148 |
+
01:40.600 --> 01:43.000
|
| 149 |
+
junto también con el enlace
|
| 150 |
+
léxico.
|
| 151 |
+
|
| 152 |
+
01:43.000 --> 01:46.200
|
| 153 |
+
Vamos a comenzar escribiendo una función
|
| 154 |
+
normal,
|
| 155 |
+
|
| 156 |
+
01:46.200 --> 01:48.400
|
| 157 |
+
tradicional, como las
|
| 158 |
+
conocemos.
|
| 159 |
+
|
| 160 |
+
01:48.400 --> 01:50.100
|
| 161 |
+
Entonces, sería
|
| 162 |
+
const,
|
| 163 |
+
|
| 164 |
+
01:50.100 --> 01:53.000
|
| 165 |
+
vamos a colocar una función de saludo,
|
| 166 |
+
|
| 167 |
+
01:53.000 --> 01:56.400
|
| 168 |
+
vamos a escribir lo que es function,
|
| 169 |
+
en este caso,
|
| 170 |
+
|
| 171 |
+
01:56.400 --> 02:01.000
|
| 172 |
+
y seguido vamos a colocar, por ejemplo,
|
| 173 |
+
un nombre
|
| 174 |
+
|
| 175 |
+
02:01.000 --> 02:04.600
|
| 176 |
+
en donde nosotros podamos aquí también
|
| 177 |
+
retornar
|
| 178 |
+
|
| 179 |
+
02:04.600 --> 02:06.400
|
| 180 |
+
lo que es este
|
| 181 |
+
nombre,
|
| 182 |
+
|
| 183 |
+
02:06.400 --> 02:08.200
|
| 184 |
+
como si fuera una especie de
|
| 185 |
+
salud.
|
| 186 |
+
|
| 187 |
+
02:08.200 --> 02:10.400
|
| 188 |
+
Entonces, podemos colocar acá, por ejemplo,
|
| 189 |
+
|
| 190 |
+
02:10.400 --> 02:13.300
|
| 191 |
+
hola y el
|
| 192 |
+
nombre.
|
| 193 |
+
|
| 194 |
+
02:13.300 --> 02:14.600
|
| 195 |
+
Listo. En este
|
| 196 |
+
caso,
|
| 197 |
+
|
| 198 |
+
02:14.600 --> 02:17.600
|
| 199 |
+
estamos creando una expresión de función.
|
| 200 |
+
|
| 201 |
+
02:17.600 --> 02:20.100
|
| 202 |
+
Entonces, tenemos lo que es una función
|
| 203 |
+
tradicional,
|
| 204 |
+
|
| 205 |
+
02:20.100 --> 02:22.000
|
| 206 |
+
no le tenemos el nombre a este lado,
|
| 207 |
+
|
| 208 |
+
02:22.000 --> 02:24.300
|
| 209 |
+
sino que simplemente creamos,
|
| 210 |
+
¿qué?
|
| 211 |
+
|
| 212 |
+
02:24.300 --> 02:26.800
|
| 213 |
+
Una variable y ahí es donde
|
| 214 |
+
tenemos
|
| 215 |
+
|
| 216 |
+
02:26.800 --> 02:29.000
|
| 217 |
+
esa asignación de la
|
| 218 |
+
función.
|
| 219 |
+
|
| 220 |
+
02:29.000 --> 02:32.100
|
| 221 |
+
Ahora, si nosotros creamos una arrow function,
|
| 222 |
+
|
| 223 |
+
02:32.100 --> 02:36.000
|
| 224 |
+
voy a copiarme esto mismo, lo voy a pegar
|
| 225 |
+
por acá,
|
| 226 |
+
|
| 227 |
+
02:36.000 --> 02:38.700
|
| 228 |
+
y tenemos esa misma
|
| 229 |
+
función,
|
| 230 |
+
|
| 231 |
+
02:38.700 --> 02:41.000
|
| 232 |
+
voy a colocarle
|
| 233 |
+
new
|
| 234 |
+
|
| 235 |
+
02:41.000 --> 02:43.700
|
| 236 |
+
para que no nos confunda aquí el programa,
|
| 237 |
+
|
| 238 |
+
02:43.700 --> 02:45.400
|
| 239 |
+
y seguido de esto lo que vamos a
|
| 240 |
+
hacer
|
| 241 |
+
|
| 242 |
+
02:45.400 --> 02:48.200
|
| 243 |
+
es quitarle la palabra
|
| 244 |
+
function,
|
| 245 |
+
|
| 246 |
+
02:48.200 --> 02:52.000
|
| 247 |
+
después lo que hacemos es agregarle una
|
| 248 |
+
flecha,
|
| 249 |
+
|
| 250 |
+
02:52.000 --> 02:53.800
|
| 251 |
+
de ahí viene también su
|
| 252 |
+
nombre.
|
| 253 |
+
|
| 254 |
+
02:53.800 --> 02:57.100
|
| 255 |
+
Entonces, simplemente lo que tenemos que
|
| 256 |
+
tener en cuenta
|
| 257 |
+
|
| 258 |
+
02:57.100 --> 02:58.900
|
| 259 |
+
es que es la misma
|
| 260 |
+
función,
|
| 261 |
+
|
| 262 |
+
02:58.900 --> 03:00.900
|
| 263 |
+
o la misma expresión de
|
| 264 |
+
función,
|
| 265 |
+
|
| 266 |
+
03:00.900 --> 03:05.100
|
| 267 |
+
simplemente que sin el function y con la
|
| 268 |
+
flecha.
|
| 269 |
+
|
| 270 |
+
03:05.100 --> 03:07.600
|
| 271 |
+
Por otro lado, lo que podemos
|
| 272 |
+
hacer
|
| 273 |
+
|
| 274 |
+
03:07.600 --> 03:10.100
|
| 275 |
+
es dejarlo en una sola
|
| 276 |
+
línea.
|
| 277 |
+
|
| 278 |
+
03:10.100 --> 03:13.100
|
| 279 |
+
Voy a colocarte por acá eso que vamos a hacer.
|
| 280 |
+
|
| 281 |
+
03:13.100 --> 03:17.800
|
| 282 |
+
Entonces, sería función flecha o arrow
|
| 283 |
+
function,
|
| 284 |
+
|
| 285 |
+
03:17.800 --> 03:21.900
|
| 286 |
+
pero con un retorno que sea implícito.
|
| 287 |
+
|
| 288 |
+
03:21.900 --> 03:24.900
|
| 289 |
+
Entonces, implicit
|
| 290 |
+
return.
|
| 291 |
+
|
| 292 |
+
03:24.900 --> 03:26.400
|
| 293 |
+
En este caso, ¿cómo
|
| 294 |
+
sería?
|
| 295 |
+
|
| 296 |
+
03:26.400 --> 03:30.100
|
| 297 |
+
Ah, y te voy a colocar este comentario acá,
|
| 298 |
+
|
| 299 |
+
03:30.100 --> 03:31.500
|
| 300 |
+
este es
|
| 301 |
+
explícito,
|
| 302 |
+
|
| 303 |
+
03:31.500 --> 03:34.200
|
| 304 |
+
es decir, nosotros directamente le estamos
|
| 305 |
+
diciendo
|
| 306 |
+
|
| 307 |
+
03:34.200 --> 03:36.000
|
| 308 |
+
return tal
|
| 309 |
+
cosa.
|
| 310 |
+
|
| 311 |
+
03:36.000 --> 03:38.800
|
| 312 |
+
En este caso, va a ser completamente distinto.
|
| 313 |
+
|
| 314 |
+
03:38.800 --> 03:42.300
|
| 315 |
+
Vamos a colocar nuevamente este saludo,
|
| 316 |
+
|
| 317 |
+
03:42.300 --> 03:46.100
|
| 318 |
+
new greeting, vamos a colocarle implicit,
|
| 319 |
+
|
| 320 |
+
03:46.100 --> 03:49.900
|
| 321 |
+
y lo que vamos a hacer es quitarle este
|
| 322 |
+
return,
|
| 323 |
+
|
| 324 |
+
03:49.900 --> 03:53.700
|
| 325 |
+
pero para que nos funcione debemos
|
| 326 |
+
quitarle también esta llave,
|
| 327 |
+
|
| 328 |
+
03:53.700 --> 03:55.000
|
| 329 |
+
la otra
|
| 330 |
+
llave,
|
| 331 |
+
|
| 332 |
+
03:55.000 --> 03:59.200
|
| 333 |
+
y subir justamente lo que tenemos dentro
|
| 334 |
+
de nuestro cuerpo.
|
| 335 |
+
|
| 336 |
+
03:59.200 --> 04:01.800
|
| 337 |
+
Por otro lado, algo importante a
|
| 338 |
+
notar
|
| 339 |
+
|
| 340 |
+
04:01.800 --> 04:06.100
|
| 341 |
+
es que acá nosotros podemos quitarle los
|
| 342 |
+
paréntesis
|
| 343 |
+
|
| 344 |
+
04:06.100 --> 04:07.500
|
| 345 |
+
a estos
|
| 346 |
+
parámetros.
|
| 347 |
+
|
| 348 |
+
04:07.500 --> 04:09.500
|
| 349 |
+
¿Por qué? Porque solamente es
|
| 350 |
+
uno.
|
| 351 |
+
|
| 352 |
+
04:09.500 --> 04:11.500
|
| 353 |
+
Entonces, lo podemos dejar
|
| 354 |
+
así
|
| 355 |
+
|
| 356 |
+
04:11.500 --> 04:13.900
|
| 357 |
+
y también nos funcionaría nuestra función.
|
| 358 |
+
|
| 359 |
+
04:13.900 --> 04:17.400
|
| 360 |
+
¿En qué casos si necesitaríamos colocarle
|
| 361 |
+
los paréntesis?
|
| 362 |
+
|
| 363 |
+
04:17.400 --> 04:20.100
|
| 364 |
+
Bueno, cuando tengamos más de un parámetro.
|
| 365 |
+
|
| 366 |
+
04:20.100 --> 04:24.800
|
| 367 |
+
Por ejemplo, si nosotros creamos esta otra
|
| 368 |
+
función,
|
| 369 |
+
|
| 370 |
+
04:24.800 --> 04:30.800
|
| 371 |
+
implicit with two
|
| 372 |
+
parameters,
|
| 373 |
+
|
| 374 |
+
04:30.800 --> 04:32.000
|
| 375 |
+
¿paraméteres?
|
| 376 |
+
|
| 377 |
+
04:32.000 --> 04:36.900
|
| 378 |
+
Aquí lo que hacemos es decirle name,
|
| 379 |
+
last name,
|
| 380 |
+
|
| 381 |
+
04:36.900 --> 04:38.200
|
| 382 |
+
por
|
| 383 |
+
ejemplo,
|
| 384 |
+
|
| 385 |
+
04:38.200 --> 04:43.800
|
| 386 |
+
y seguido le colocamos hola, yo soy, nombre,
|
| 387 |
+
|
| 388 |
+
04:43.800 --> 04:46.600
|
| 389 |
+
y luego le colocamos el
|
| 390 |
+
apellido.
|
| 391 |
+
|
| 392 |
+
04:46.600 --> 04:48.600
|
| 393 |
+
Entonces, en este
|
| 394 |
+
caso,
|
| 395 |
+
|
| 396 |
+
04:48.600 --> 04:51.100
|
| 397 |
+
realmente lo único que nos interesa ver
|
| 398 |
+
acá
|
| 399 |
+
|
| 400 |
+
04:51.100 --> 04:53.400
|
| 401 |
+
son los parámetros y los paréntesis,
|
| 402 |
+
|
| 403 |
+
04:53.400 --> 04:56.000
|
| 404 |
+
es que acá netamente le colocamos los
|
| 405 |
+
paréntesis
|
| 406 |
+
|
| 407 |
+
04:56.000 --> 04:59.800
|
| 408 |
+
y cuando es solamente un parámetro se los
|
| 409 |
+
podemos quitar.
|
| 410 |
+
|
| 411 |
+
04:59.800 --> 05:03.400
|
| 412 |
+
Ahora, algo importante a revisar con estas
|
| 413 |
+
arrow functions
|
| 414 |
+
|
| 415 |
+
05:03.400 --> 05:06.000
|
| 416 |
+
es precisamente la vinculación que
|
| 417 |
+
tienen
|
| 418 |
+
|
| 419 |
+
05:06.000 --> 05:09.200
|
| 420 |
+
con el contexto de ejecución o con el dis.
|
| 421 |
+
|
| 422 |
+
05:09.200 --> 05:11.600
|
| 423 |
+
Para ello vamos a crear otro ejemplo.
|
| 424 |
+
|
| 425 |
+
05:11.600 --> 05:13.600
|
| 426 |
+
Entonces, venimos por este
|
| 427 |
+
lado
|
| 428 |
+
|
| 429 |
+
05:13.600 --> 05:17.600
|
| 430 |
+
y vamos a escribir lexical
|
| 431 |
+
binding.
|
| 432 |
+
|
| 433 |
+
05:17.600 --> 05:18.600
|
| 434 |
+
Muy
|
| 435 |
+
bien.
|
| 436 |
+
|
| 437 |
+
05:18.600 --> 05:21.000
|
| 438 |
+
Entonces, por este lado lo que vamos a
|
| 439 |
+
hacer es
|
| 440 |
+
|
| 441 |
+
05:21.000 --> 05:22.800
|
| 442 |
+
primero crear un
|
| 443 |
+
objeto
|
| 444 |
+
|
| 445 |
+
05:22.800 --> 05:24.800
|
| 446 |
+
y vamos a crear
|
| 447 |
+
métodos.
|
| 448 |
+
|
| 449 |
+
05:24.800 --> 05:27.600
|
| 450 |
+
El primer método va a ser con una función
|
| 451 |
+
tradicional
|
| 452 |
+
|
| 453 |
+
05:27.600 --> 05:30.600
|
| 454 |
+
y el segundo va a ser con arrow
|
| 455 |
+
functions
|
| 456 |
+
|
| 457 |
+
05:30.600 --> 05:34.600
|
| 458 |
+
precisamente para que veamos cómo cambia
|
| 459 |
+
ese enlace léxico
|
| 460 |
+
|
| 461 |
+
05:34.600 --> 05:37.800
|
| 462 |
+
o ese enlace, justamente esa vinculación
|
| 463 |
+
con el dis.
|
| 464 |
+
|
| 465 |
+
05:37.800 --> 05:40.600
|
| 466 |
+
Creemos entonces nuestro
|
| 467 |
+
objeto.
|
| 468 |
+
|
| 469 |
+
05:40.600 --> 05:43.600
|
| 470 |
+
Sería const
|
| 471 |
+
fictionalCharacter.
|
| 472 |
+
|
| 473 |
+
05:43.600 --> 05:47.600
|
| 474 |
+
Entonces,
|
| 475 |
+
fictionalCharacter,
|
| 476 |
+
|
| 477 |
+
05:47.600 --> 05:49.600
|
| 478 |
+
character.
|
| 479 |
+
|
| 480 |
+
05:49.600 --> 05:51.600
|
| 481 |
+
Y vamos a abrir entonces nuestras
|
| 482 |
+
llaves
|
| 483 |
+
|
| 484 |
+
05:51.600 --> 05:53.600
|
| 485 |
+
para empezar a crear nuestro objeto.
|
| 486 |
+
|
| 487 |
+
05:53.600 --> 05:55.600
|
| 488 |
+
Lo primero es colocar un
|
| 489 |
+
nombre.
|
| 490 |
+
|
| 491 |
+
05:55.600 --> 05:57.600
|
| 492 |
+
Entonces, vamos a colocar
|
| 493 |
+
name.
|
| 494 |
+
|
| 495 |
+
05:57.600 --> 06:00.600
|
| 496 |
+
En este caso voy a colocar al tío Ben,
|
| 497 |
+
|
| 498 |
+
06:00.600 --> 06:03.600
|
| 499 |
+
uncle Ben, del Hombre
|
| 500 |
+
Araña.
|
| 501 |
+
|
| 502 |
+
06:03.600 --> 06:06.600
|
| 503 |
+
Y acá lo que voy a colocar es un
|
| 504 |
+
mensaje
|
| 505 |
+
|
| 506 |
+
06:06.600 --> 06:08.600
|
| 507 |
+
con la función
|
| 508 |
+
tradicional.
|
| 509 |
+
|
| 510 |
+
06:08.600 --> 06:15.600
|
| 511 |
+
Entonces, coloquemos message with
|
| 512 |
+
traditional function.
|
| 513 |
+
|
| 514 |
+
06:15.600 --> 06:16.600
|
| 515 |
+
Excelente.
|
| 516 |
+
|
| 517 |
+
06:16.600 --> 06:18.600
|
| 518 |
+
Y acá colocamos la
|
| 519 |
+
función,
|
| 520 |
+
|
| 521 |
+
06:18.600 --> 06:21.600
|
| 522 |
+
que sería
|
| 523 |
+
function,
|
| 524 |
+
|
| 525 |
+
06:21.600 --> 06:24.600
|
| 526 |
+
seguido de el
|
| 527 |
+
parámetro,
|
| 528 |
+
|
| 529 |
+
06:24.600 --> 06:26.600
|
| 530 |
+
que va a ser quién, el
|
| 531 |
+
mensaje,
|
| 532 |
+
|
| 533 |
+
06:26.600 --> 06:28.600
|
| 534 |
+
message,
|
| 535 |
+
|
| 536 |
+
06:28.600 --> 06:30.600
|
| 537 |
+
y dentro vamos a colocar un
|
| 538 |
+
cuerpo.
|
| 539 |
+
|
| 540 |
+
06:30.600 --> 06:32.600
|
| 541 |
+
Este cuerpo lo ideal es que tenga el
|
| 542 |
+
dis
|
| 543 |
+
|
| 544 |
+
06:32.600 --> 06:35.600
|
| 545 |
+
para que podamos ver cómo esa diferencia.
|
| 546 |
+
|
| 547 |
+
06:35.600 --> 06:38.600
|
| 548 |
+
Entonces, colocamos
|
| 549 |
+
console.log
|
| 550 |
+
|
| 551 |
+
06:38.600 --> 06:41.600
|
| 552 |
+
y dentro lo que hacemos es hacer esa
|
| 553 |
+
vinculación.
|
| 554 |
+
|
| 555 |
+
06:41.600 --> 06:46.600
|
| 556 |
+
Podemos colocar, por ejemplo, dis.name,
|
| 557 |
+
|
| 558 |
+
06:46.600 --> 06:48.600
|
| 559 |
+
en este caso para que tomemos este
|
| 560 |
+
name
|
| 561 |
+
|
| 562 |
+
06:48.600 --> 06:49.600
|
| 563 |
+
que está por
|
| 564 |
+
aquí,
|
| 565 |
+
|
| 566 |
+
06:49.600 --> 06:52.600
|
| 567 |
+
y luego decimos el tío Ben
|
| 568 |
+
dice,
|
| 569 |
+
|
| 570 |
+
06:52.600 --> 06:54.600
|
| 571 |
+
y ¿qué podría
|
| 572 |
+
decir?
|
| 573 |
+
|
| 574 |
+
06:54.600 --> 06:59.600
|
| 575 |
+
Bueno, el mensaje que le estamos mandando
|
| 576 |
+
como parámetro.
|
| 577 |
+
|
| 578 |
+
06:59.600 --> 07:01.600
|
| 579 |
+
Entonces, aquí, recapitulación rápida.
|
| 580 |
+
|
| 581 |
+
07:01.600 --> 07:03.600
|
| 582 |
+
Tenemos un
|
| 583 |
+
objeto.
|
| 584 |
+
|
| 585 |
+
07:03.600 --> 07:05.600
|
| 586 |
+
En este caso tenemos un nombre dentro de
|
| 587 |
+
ese objeto
|
| 588 |
+
|
| 589 |
+
07:05.600 --> 07:06.600
|
| 590 |
+
que es el tío
|
| 591 |
+
Ben,
|
| 592 |
+
|
| 593 |
+
07:06.600 --> 07:09.600
|
| 594 |
+
y tenemos un método, en este
|
| 595 |
+
caso,
|
| 596 |
+
|
| 597 |
+
07:09.600 --> 07:12.600
|
| 598 |
+
que es el mensaje del tío Ben, en este caso,
|
| 599 |
+
|
| 600 |
+
07:12.600 --> 07:16.600
|
| 601 |
+
que toma el nombre que tiene dentro de ese
|
| 602 |
+
objeto
|
| 603 |
+
|
| 604 |
+
07:16.600 --> 07:19.600
|
| 605 |
+
y también un mensaje que le vamos a pasar
|
| 606 |
+
por parámetro.
|
| 607 |
+
|
| 608 |
+
07:19.600 --> 07:23.600
|
| 609 |
+
Seguido, vamos a crear exactamente esto mismo,
|
| 610 |
+
|
| 611 |
+
07:23.600 --> 07:24.600
|
| 612 |
+
tan, tan,
|
| 613 |
+
tan,
|
| 614 |
+
|
| 615 |
+
07:24.600 --> 07:28.600
|
| 616 |
+
pero lo vamos a hacer con una función de
|
| 617 |
+
arrow function.
|
| 618 |
+
|
| 619 |
+
07:28.600 --> 07:31.600
|
| 620 |
+
Entonces, vamos a colocar with arrow function,
|
| 621 |
+
|
| 622 |
+
07:31.600 --> 07:34.600
|
| 623 |
+
y aquí, por supuesto, vamos a cambiarlo.
|
| 624 |
+
|
| 625 |
+
07:34.600 --> 07:36.600
|
| 626 |
+
Le quitamos la palabra
|
| 627 |
+
function
|
| 628 |
+
|
| 629 |
+
07:36.600 --> 07:40.600
|
| 630 |
+
y le colocamos la flechita por
|
| 631 |
+
acá.
|
| 632 |
+
|
| 633 |
+
07:40.600 --> 07:41.600
|
| 634 |
+
Muy
|
| 635 |
+
bien.
|
| 636 |
+
|
| 637 |
+
07:41.600 --> 07:46.600
|
| 638 |
+
Y así ya tendríamos nuestro objeto con dos
|
| 639 |
+
métodos.
|
| 640 |
+
|
| 641 |
+
07:46.600 --> 07:49.600
|
| 642 |
+
Ahora sigue el turno de la ejecución.
|
| 643 |
+
|
| 644 |
+
07:49.600 --> 07:53.600
|
| 645 |
+
Entonces, vamos a colocar fictional character,
|
| 646 |
+
|
| 647 |
+
07:53.600 --> 07:55.600
|
| 648 |
+
lo traemos por aquí
|
| 649 |
+
abajo,
|
| 650 |
+
|
| 651 |
+
07:55.600 --> 07:57.600
|
| 652 |
+
y le decimos que nos llame a
|
| 653 |
+
quién,
|
| 654 |
+
|
| 655 |
+
07:57.600 --> 08:00.600
|
| 656 |
+
a este mensaje con la función tradicional.
|
| 657 |
+
|
| 658 |
+
08:00.600 --> 08:02.600
|
| 659 |
+
En este caso, lo que vamos a
|
| 660 |
+
hacer
|
| 661 |
+
|
| 662 |
+
08:02.600 --> 08:07.600
|
| 663 |
+
es netamente pasarle el mensaje que
|
| 664 |
+
necesitamos ahí como parámetro.
|
| 665 |
+
|
| 666 |
+
08:07.600 --> 08:09.600
|
| 667 |
+
Entonces, ¿qué le vamos a
|
| 668 |
+
decir?
|
| 669 |
+
|
| 670 |
+
08:09.600 --> 08:11.600
|
| 671 |
+
Le vamos a decir, por
|
| 672 |
+
ejemplo,
|
| 673 |
+
|
| 674 |
+
08:11.600 --> 08:21.600
|
| 675 |
+
with great power comes great responsibility.
|
| 676 |
+
|
| 677 |
+
08:21.600 --> 08:24.600
|
| 678 |
+
Entonces, un gran poder conlleva una gran
|
| 679 |
+
responsabilidad.
|
| 680 |
+
|
| 681 |
+
08:24.600 --> 08:27.600
|
| 682 |
+
Y luego vamos a colocar exactamente lo mismo,
|
| 683 |
+
|
| 684 |
+
08:27.600 --> 08:30.600
|
| 685 |
+
solo que vamos a cambiar el
|
| 686 |
+
método,
|
| 687 |
+
|
| 688 |
+
08:30.600 --> 08:33.600
|
| 689 |
+
en este caso sería con arrow function,
|
| 690 |
+
|
| 691 |
+
08:33.600 --> 08:35.600
|
| 692 |
+
y vamos a cambiar este
|
| 693 |
+
mensaje.
|
| 694 |
+
|
| 695 |
+
08:35.600 --> 08:39.600
|
| 696 |
+
Puede ser, por ejemplo, voy a colocarle
|
| 697 |
+
por acá,
|
| 698 |
+
|
| 699 |
+
08:39.600 --> 08:43.600
|
| 700 |
+
beware, que lo haya escrito bien, sí,
|
| 701 |
+
|
| 702 |
+
08:43.600 --> 08:46.600
|
| 703 |
+
of Dr.
|
| 704 |
+
Octopus.
|
| 705 |
+
|
| 706 |
+
08:46.600 --> 08:48.600
|
| 707 |
+
Cuidado con el Dr.
|
| 708 |
+
Octopus.
|
| 709 |
+
|
| 710 |
+
08:48.600 --> 08:49.600
|
| 711 |
+
Listo.
|
| 712 |
+
|
| 713 |
+
08:49.600 --> 08:50.600
|
| 714 |
+
Ahí es
|
| 715 |
+
cualquiera.
|
| 716 |
+
|
| 717 |
+
08:50.600 --> 08:52.600
|
| 718 |
+
Cualquier mensaje que nosotros queramos pone.
|
| 719 |
+
|
| 720 |
+
08:52.600 --> 08:53.600
|
| 721 |
+
OK.
|
| 722 |
+
|
| 723 |
+
08:53.600 --> 08:54.600
|
| 724 |
+
Vamos a
|
| 725 |
+
guardar,
|
| 726 |
+
|
| 727 |
+
08:54.600 --> 08:57.600
|
| 728 |
+
y lo que vamos a hacer es correr nuestro
|
| 729 |
+
código.
|
| 730 |
+
|
| 731 |
+
08:57.600 --> 09:01.600
|
| 732 |
+
Para ello, colocamos node, clase y ejecutamos.
|
| 733 |
+
|
| 734 |
+
09:01.600 --> 09:04.600
|
| 735 |
+
Aquí mira lo
|
| 736 |
+
interesante.
|
| 737 |
+
|
| 738 |
+
09:04.600 --> 09:07.600
|
| 739 |
+
Resulta que en la primera
|
| 740 |
+
función,
|
| 741 |
+
|
| 742 |
+
09:07.600 --> 09:08.600
|
| 743 |
+
en esta que
|
| 744 |
+
ejecutamos,
|
| 745 |
+
|
| 746 |
+
09:08.600 --> 09:10.600
|
| 747 |
+
nos sale el tío Ben
|
| 748 |
+
dice,
|
| 749 |
+
|
| 750 |
+
09:10.600 --> 09:13.600
|
| 751 |
+
un gran poder conlleva una gran
|
| 752 |
+
responsabilidad,
|
| 753 |
+
|
| 754 |
+
09:13.600 --> 09:14.600
|
| 755 |
+
todo súper
|
| 756 |
+
bien,
|
| 757 |
+
|
| 758 |
+
09:14.600 --> 09:18.600
|
| 759 |
+
pero en la segunda nos sale que indefinido
|
| 760 |
+
dice,
|
| 761 |
+
|
| 762 |
+
09:18.600 --> 09:20.600
|
| 763 |
+
cuidado con
|
| 764 |
+
x.
|
| 765 |
+
|
| 766 |
+
09:20.600 --> 09:21.600
|
| 767 |
+
Listo.
|
| 768 |
+
|
| 769 |
+
09:20.600 --> 09:21.600
|
| 770 |
+
Entonces, mira lo
|
| 771 |
+
interesante,
|
| 772 |
+
|
| 773 |
+
09:21.600 --> 09:25.600
|
| 774 |
+
y es que aquí, this para esta arrow
|
| 775 |
+
function
|
| 776 |
+
|
| 777 |
+
09:25.600 --> 09:27.600
|
| 778 |
+
es como si no
|
| 779 |
+
existiera,
|
| 780 |
+
|
| 781 |
+
09:27.600 --> 09:29.600
|
| 782 |
+
como si no fuera este
|
| 783 |
+
objeto.
|
| 784 |
+
|
| 785 |
+
09:29.600 --> 09:32.600
|
| 786 |
+
Y aquí es donde hablamos precisamente de
|
| 787 |
+
ese enlace léxico,
|
| 788 |
+
|
| 789 |
+
09:32.600 --> 09:34.600
|
| 790 |
+
es decir, que no hay una
|
| 791 |
+
vinculación
|
| 792 |
+
|
| 793 |
+
09:34.600 --> 09:37.600
|
| 794 |
+
justamente en este tipo de
|
| 795 |
+
casos.
|
| 796 |
+
|
| 797 |
+
09:37.600 --> 09:40.600
|
| 798 |
+
Entonces, esto es algo increíble que
|
| 799 |
+
podemos revisar
|
| 800 |
+
|
| 801 |
+
09:40.600 --> 09:41.600
|
| 802 |
+
y una de las grandes
|
| 803 |
+
diferencias
|
| 804 |
+
|
| 805 |
+
09:41.600 --> 09:44.600
|
| 806 |
+
que también podemos notar con las
|
| 807 |
+
funciones tradicionales
|
| 808 |
+
|
| 809 |
+
09:44.600 --> 09:46.600
|
| 810 |
+
y las arrow
|
| 811 |
+
functions.
|
| 812 |
+
|
| 813 |
+
09:46.600 --> 09:48.600
|
| 814 |
+
Y aquí, mientras te estaba contando todo
|
| 815 |
+
esto
|
| 816 |
+
|
| 817 |
+
09:48.600 --> 09:51.600
|
| 818 |
+
de las funciones, el this y
|
| 819 |
+
demás,
|
| 820 |
+
|
| 821 |
+
09:51.600 --> 09:54.600
|
| 822 |
+
me acabo de dar cuenta que este
|
| 823 |
+
great
|
| 824 |
+
|
| 825 |
+
09:54.600 --> 09:57.600
|
| 826 |
+
le falta justamente la
|
| 827 |
+
g.
|
| 828 |
+
|
| 829 |
+
09:57.600 --> 09:59.600
|
| 830 |
+
Y para que esto no te suceda como a mí,
|
| 831 |
+
|
| 832 |
+
09:59.600 --> 10:01.600
|
| 833 |
+
hay una extensión
|
| 834 |
+
poderosísima,
|
| 835 |
+
|
| 836 |
+
10:01.600 --> 10:03.600
|
| 837 |
+
hay una herramienta espectacular que te
|
| 838 |
+
puede servir,
|
| 839 |
+
|
| 840 |
+
10:03.600 --> 10:06.600
|
| 841 |
+
te la dejo, por supuesto, en la cajita de
|
| 842 |
+
recursos
|
| 843 |
+
|
| 844 |
+
10:06.600 --> 10:08.600
|
| 845 |
+
para que si estás trabajando en inglés,
|
| 846 |
+
|
| 847 |
+
10:08.600 --> 10:11.600
|
| 848 |
+
pues este tipo de typos no te sucedan.
|
| 849 |
+
|
| 850 |
+
10:11.600 --> 10:13.600
|
| 851 |
+
Entonces, ya en
|
| 852 |
+
resumen,
|
| 853 |
+
|
| 854 |
+
10:13.600 --> 10:16.600
|
| 855 |
+
lo que vimos en esta clase es arrow functions,
|
| 856 |
+
|
| 857 |
+
10:16.600 --> 10:18.600
|
| 858 |
+
la diferencia también con las funciones
|
| 859 |
+
tradicionales,
|
| 860 |
+
|
| 861 |
+
10:18.600 --> 10:21.600
|
| 862 |
+
y también el lexical
|
| 863 |
+
binding,
|
| 864 |
+
|
| 865 |
+
10:21.600 --> 10:24.600
|
| 866 |
+
o también en español como enlace léxico.
|
| 867 |
+
|
| 868 |
+
10:24.600 --> 10:26.600
|
| 869 |
+
Cuéntame, por favor, en los comentarios,
|
| 870 |
+
|
| 871 |
+
10:26.600 --> 10:28.600
|
| 872 |
+
¿cuál es tu forma favorita de escribir
|
| 873 |
+
funciones?
|
| 874 |
+
|
| 875 |
+
10:28.600 --> 10:47.600
|
| 876 |
+
Si con la función tradicional o con las
|
| 877 |
+
arrow functions.
|
| 878 |
+
|
subir/Curso de Fundamentos de JavaScript/03-Funciones y This/04-Lecturas recomendadas.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://github.com/platzi/basico-js
|
subir/Curso de Fundamentos de JavaScript/03-Funciones y This/04-Resumen.html
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
subir/Curso de Fundamentos de JavaScript/03-Funciones y This/04-clase-arrow-functions_7e661920-826a-43c9-97cf-d5d67e3de5ea.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
const greeting = function (name) {
|
| 2 |
+
return `Hi, ${name}`
|
| 3 |
+
}
|
| 4 |
+
|
| 5 |
+
// Arrow function - explicit return
|
| 6 |
+
|
| 7 |
+
const newGreeting = (name) => {
|
| 8 |
+
return `Hi, ${name}`
|
| 9 |
+
}
|
| 10 |
+
|
| 11 |
+
// Arrow function - implicit return
|
| 12 |
+
|
| 13 |
+
const newGreetingImplicit = name => `Hi, ${name}`
|
| 14 |
+
const newGreetingImplicitWithTwoParameters = (name, lastName) => `Hi, I'm ${name} ${lastName}`
|
| 15 |
+
|
| 16 |
+
// Lexical Binding
|
| 17 |
+
|
| 18 |
+
const finctionalCharacter = {
|
| 19 |
+
name: 'Uncle Ben',
|
| 20 |
+
messageWithTraditionalFunction: function (message) {
|
| 21 |
+
console.log(`${this.name} says: ${message}`)
|
| 22 |
+
},
|
| 23 |
+
messageWithArrowFunction: (message) => {
|
| 24 |
+
console.log(`${this.name} says: ${message}`)
|
| 25 |
+
}
|
| 26 |
+
}
|
| 27 |
+
|
| 28 |
+
finctionalCharacter.messageWithTraditionalFunction('With great power comes great responsability.')
|
| 29 |
+
finctionalCharacter.messageWithArrowFunction('Beware of Doctor Octopus.')
|
subir/Curso de Fundamentos de JavaScript/03-Funciones y This/05-Lecturas recomendadas.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://github.com/platzi/basico-js
|
subir/Curso de Fundamentos de JavaScript/03-Funciones y This/05-Resumen.html
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
subir/Curso de Fundamentos de JavaScript/03-Funciones y This/05-Scope y Contextos de Ejecución en JavaScript.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:bebf8f7bd0328e8f753a89d812ed151c5afdeb19c739abb76b4de544d52ed7eb
|
| 3 |
+
size 58855670
|
subir/Curso de Fundamentos de JavaScript/03-Funciones y This/05-Scope y Contextos de Ejecución en JavaScript.vtt
ADDED
|
@@ -0,0 +1,1070 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:00.000 --> 00:03.440
|
| 4 |
+
En esta clase vamos a hablar sobre los
|
| 5 |
+
contextos de ejecución
|
| 6 |
+
|
| 7 |
+
00:03.440 --> 00:07.440
|
| 8 |
+
y el scope chain, o también conocido como
|
| 9 |
+
cadena de alcances.
|
| 10 |
+
|
| 11 |
+
00:08.000 --> 00:10.600
|
| 12 |
+
¿Por qué es que son importantes estos dos
|
| 13 |
+
conceptos?
|
| 14 |
+
|
| 15 |
+
00:10.960 --> 00:14.000
|
| 16 |
+
Resulta que en JavaScript podemos escribir
|
| 17 |
+
variables
|
| 18 |
+
|
| 19 |
+
00:14.000 --> 00:16.600
|
| 20 |
+
con diferentes tipos de palabras claves,
|
| 21 |
+
|
| 22 |
+
00:16.600 --> 00:19.200
|
| 23 |
+
como lo son var, let y
|
| 24 |
+
const.
|
| 25 |
+
|
| 26 |
+
00:19.440 --> 00:22.000
|
| 27 |
+
Pero resulta que estas tres palabras
|
| 28 |
+
claves
|
| 29 |
+
|
| 30 |
+
00:22.000 --> 00:23.880
|
| 31 |
+
tienen ciertas
|
| 32 |
+
diferencias,
|
| 33 |
+
|
| 34 |
+
00:23.880 --> 00:28.280
|
| 35 |
+
y gracias a esas diferencias es que
|
| 36 |
+
decidimos utilizar una u otra.
|
| 37 |
+
|
| 38 |
+
00:28.280 --> 00:32.760
|
| 39 |
+
Resulta que entre esas diferencias tenemos
|
| 40 |
+
el scope, el hoisting,
|
| 41 |
+
|
| 42 |
+
00:32.760 --> 00:35.960
|
| 43 |
+
si pueden ser reasignadas o si pueden ser
|
| 44 |
+
redeclaradas.
|
| 45 |
+
|
| 46 |
+
00:36.280 --> 00:41.280
|
| 47 |
+
En este caso, por ejemplo, tenemos que var
|
| 48 |
+
tiene un scope de tipo function,
|
| 49 |
+
|
| 50 |
+
00:41.480 --> 00:43.880
|
| 51 |
+
que let tiene un scope de tipo bloque,
|
| 52 |
+
|
| 53 |
+
00:44.080 --> 00:46.960
|
| 54 |
+
y que const también tiene un scope de tipo
|
| 55 |
+
bloque.
|
| 56 |
+
|
| 57 |
+
00:47.080 --> 00:50.360
|
| 58 |
+
Lo importante es tener súper presente esas
|
| 59 |
+
diferencias
|
| 60 |
+
|
| 61 |
+
00:50.560 --> 00:53.680
|
| 62 |
+
a la hora, por supuesto, de empezar con
|
| 63 |
+
contextos de ejecución
|
| 64 |
+
|
| 65 |
+
00:53.880 --> 00:56.080
|
| 66 |
+
y con todo este tema de
|
| 67 |
+
scopes
|
| 68 |
+
|
| 69 |
+
00:56.080 --> 00:59.560
|
| 70 |
+
y el por qué es que es tan importante
|
| 71 |
+
estos dos tipos de conceptos.
|
| 72 |
+
|
| 73 |
+
00:59.960 --> 01:02.760
|
| 74 |
+
Para ello, vamos a empezar a ver un código,
|
| 75 |
+
|
| 76 |
+
01:02.760 --> 01:04.760
|
| 77 |
+
que es este que tenemos aquí en pantalla,
|
| 78 |
+
|
| 79 |
+
01:05.160 --> 01:07.960
|
| 80 |
+
y como podemos observar, tenemos unas
|
| 81 |
+
variables
|
| 82 |
+
|
| 83 |
+
01:07.960 --> 01:10.080
|
| 84 |
+
que ya están declaradas con
|
| 85 |
+
const,
|
| 86 |
+
|
| 87 |
+
01:10.280 --> 01:13.760
|
| 88 |
+
como lo son productName, price y brand.
|
| 89 |
+
|
| 90 |
+
01:13.960 --> 01:17.480
|
| 91 |
+
Resulta que todo lo que vemos al lado
|
| 92 |
+
izquierdo del igual
|
| 93 |
+
|
| 94 |
+
01:17.760 --> 01:21.560
|
| 95 |
+
es, por supuesto, lo que es la declaración
|
| 96 |
+
de las variables.
|
| 97 |
+
|
| 98 |
+
01:21.560 --> 01:25.760
|
| 99 |
+
Y lo que está después del igual es la
|
| 100 |
+
asignación de estas variables.
|
| 101 |
+
|
| 102 |
+
01:26.160 --> 01:30.160
|
| 103 |
+
Luego tenemos una función que por dentro
|
| 104 |
+
hace ciertas cosas,
|
| 105 |
+
|
| 106 |
+
01:30.160 --> 01:33.160
|
| 107 |
+
entre ellas declarar nuevamente dos variables,
|
| 108 |
+
|
| 109 |
+
01:33.360 --> 01:35.360
|
| 110 |
+
y luego tenemos un
|
| 111 |
+
return.
|
| 112 |
+
|
| 113 |
+
01:35.760 --> 01:38.360
|
| 114 |
+
En este return tenemos un
|
| 115 |
+
string,
|
| 116 |
+
|
| 117 |
+
01:38.560 --> 01:41.360
|
| 118 |
+
y ese string dice, the
|
| 119 |
+
productName,
|
| 120 |
+
|
| 121 |
+
01:41.560 --> 01:43.560
|
| 122 |
+
ahí ya está tomando una de las
|
| 123 |
+
variables
|
| 124 |
+
|
| 125 |
+
01:43.560 --> 01:46.760
|
| 126 |
+
que nosotros ya declaramos y asignamos
|
| 127 |
+
anteriormente,
|
| 128 |
+
|
| 129 |
+
01:46.960 --> 01:50.560
|
| 130 |
+
luego dice costs, y luego dice price,
|
| 131 |
+
|
| 132 |
+
01:50.560 --> 01:53.760
|
| 133 |
+
ese price también es como si estuviera
|
| 134 |
+
tomando otra variable,
|
| 135 |
+
|
| 136 |
+
01:54.160 --> 01:56.560
|
| 137 |
+
sigue nuestra cadena de
|
| 138 |
+
texto,
|
| 139 |
+
|
| 140 |
+
01:56.560 --> 01:59.960
|
| 141 |
+
y al final también está utilizando una
|
| 142 |
+
variable de esas
|
| 143 |
+
|
| 144 |
+
01:59.960 --> 02:02.760
|
| 145 |
+
que ya estamos asignando y declarando arriba.
|
| 146 |
+
|
| 147 |
+
02:03.760 --> 02:07.160
|
| 148 |
+
Finalmente, debajo de esa función tenemos
|
| 149 |
+
un console.log
|
| 150 |
+
|
| 151 |
+
02:07.160 --> 02:09.160
|
| 152 |
+
que ejecuta esta
|
| 153 |
+
función.
|
| 154 |
+
|
| 155 |
+
02:09.560 --> 02:12.760
|
| 156 |
+
Lo importante acá es tener en cuenta qué
|
| 157 |
+
es lo que va a pasar.
|
| 158 |
+
|
| 159 |
+
02:12.960 --> 02:16.560
|
| 160 |
+
Resulta que la salida es justamente de laptop,
|
| 161 |
+
|
| 162 |
+
02:16.760 --> 02:20.160
|
| 163 |
+
ahí ya podemos ver que productName es quién,
|
| 164 |
+
|
| 165 |
+
02:20.160 --> 02:23.960
|
| 166 |
+
justamente la variable que declaramos y
|
| 167 |
+
asignamos
|
| 168 |
+
|
| 169 |
+
02:23.960 --> 02:25.960
|
| 170 |
+
dentro de la
|
| 171 |
+
función.
|
| 172 |
+
|
| 173 |
+
02:26.160 --> 02:29.960
|
| 174 |
+
Luego dice costs, y de ahí sigue el
|
| 175 |
+
valor
|
| 176 |
+
|
| 177 |
+
02:29.960 --> 02:32.960
|
| 178 |
+
que cogió justamente el
|
| 179 |
+
899.
|
| 180 |
+
|
| 181 |
+
02:33.160 --> 02:36.960
|
| 182 |
+
Este también nos indica que tomó la
|
| 183 |
+
variable que asignamos
|
| 184 |
+
|
| 185 |
+
02:36.960 --> 02:39.960
|
| 186 |
+
y declaramos justo dentro de la función,
|
| 187 |
+
|
| 188 |
+
02:40.160 --> 02:42.960
|
| 189 |
+
y al final lo que es la variable brand,
|
| 190 |
+
|
| 191 |
+
02:42.960 --> 02:45.960
|
| 192 |
+
la tomó de dónde, de arriba de la función,
|
| 193 |
+
|
| 194 |
+
02:45.960 --> 02:48.560
|
| 195 |
+
es decir, que se salió
|
| 196 |
+
justamente,
|
| 197 |
+
|
| 198 |
+
02:48.560 --> 02:53.560
|
| 199 |
+
y tomó ese techCode que habíamos asignado
|
| 200 |
+
y declarado inicialmente.
|
| 201 |
+
|
| 202 |
+
02:53.760 --> 02:59.960
|
| 203 |
+
La salida de este código es de laptop, costs,
|
| 204 |
+
899,
|
| 205 |
+
|
| 206 |
+
02:59.960 --> 03:03.760
|
| 207 |
+
él tomó ese valor, y luego dice techCode.
|
| 208 |
+
|
| 209 |
+
03:03.760 --> 03:06.960
|
| 210 |
+
Lo importante es básicamente saber cuál es
|
| 211 |
+
la salida
|
| 212 |
+
|
| 213 |
+
03:06.960 --> 03:08.560
|
| 214 |
+
en cuanto a
|
| 215 |
+
variables.
|
| 216 |
+
|
| 217 |
+
03:08.760 --> 03:12.360
|
| 218 |
+
Entonces, vamos a ver de dónde él sacó
|
| 219 |
+
justamente esos valores.
|
| 220 |
+
|
| 221 |
+
03:12.760 --> 03:15.960
|
| 222 |
+
Entonces, productName, aquí podemos ver
|
| 223 |
+
que lo tomó
|
| 224 |
+
|
| 225 |
+
03:15.960 --> 03:18.960
|
| 226 |
+
de la variable que nosotros declaramos y
|
| 227 |
+
asignamos
|
| 228 |
+
|
| 229 |
+
03:18.960 --> 03:21.960
|
| 230 |
+
dentro de la función, al igual que price,
|
| 231 |
+
|
| 232 |
+
03:21.960 --> 03:25.360
|
| 233 |
+
que también lo tomó de la variable que
|
| 234 |
+
está dentro de la función,
|
| 235 |
+
|
| 236 |
+
03:25.560 --> 03:29.560
|
| 237 |
+
y lo que es brand lo tomó de afuera de esa
|
| 238 |
+
función.
|
| 239 |
+
|
| 240 |
+
03:29.760 --> 03:33.360
|
| 241 |
+
Ahora veamos esto que vamos a colocar a
|
| 242 |
+
continuación.
|
| 243 |
+
|
| 244 |
+
03:33.560 --> 03:37.560
|
| 245 |
+
Es el mismo código, tenemos las tres
|
| 246 |
+
variables asignadas arriba,
|
| 247 |
+
|
| 248 |
+
03:37.760 --> 03:41.160
|
| 249 |
+
la función con las mismas variables que
|
| 250 |
+
teníamos anteriormente,
|
| 251 |
+
|
| 252 |
+
03:41.360 --> 03:45.160
|
| 253 |
+
solo que en el console.log ya no estamos
|
| 254 |
+
ejecutando la función,
|
| 255 |
+
|
| 256 |
+
03:45.160 --> 03:48.160
|
| 257 |
+
sino que estamos colocando una cadena de
|
| 258 |
+
texto
|
| 259 |
+
|
| 260 |
+
03:48.360 --> 03:52.360
|
| 261 |
+
que tiene también esas variables de
|
| 262 |
+
productName, price y brand.
|
| 263 |
+
|
| 264 |
+
03:52.560 --> 03:55.760
|
| 265 |
+
Cuéntame en los comentarios cuál crees que
|
| 266 |
+
es la salida
|
| 267 |
+
|
| 268 |
+
03:55.760 --> 03:57.160
|
| 269 |
+
ahora de este
|
| 270 |
+
código.
|
| 271 |
+
|
| 272 |
+
03:57.360 --> 04:01.160
|
| 273 |
+
La salida es de smartphone, ahí ya vemos
|
| 274 |
+
que cambió,
|
| 275 |
+
|
| 276 |
+
04:01.360 --> 04:06.560
|
| 277 |
+
el costo también cambió y la marca, el brand,
|
| 278 |
+
también cambió.
|
| 279 |
+
|
| 280 |
+
04:06.760 --> 04:08.760
|
| 281 |
+
Revisemos qué fue lo que hizo en este caso.
|
| 282 |
+
|
| 283 |
+
04:08.960 --> 04:12.160
|
| 284 |
+
Acá, productName lo tomó de
|
| 285 |
+
dónde?
|
| 286 |
+
|
| 287 |
+
04:12.360 --> 04:14.160
|
| 288 |
+
De afuera de la
|
| 289 |
+
función.
|
| 290 |
+
|
| 291 |
+
04:14.160 --> 04:18.160
|
| 292 |
+
Luego, el precio también lo tomó de afuera
|
| 293 |
+
de la función
|
| 294 |
+
|
| 295 |
+
04:18.360 --> 04:21.360
|
| 296 |
+
y brand también lo tomó de afuera de la
|
| 297 |
+
función.
|
| 298 |
+
|
| 299 |
+
04:21.560 --> 04:23.360
|
| 300 |
+
Cuéntame en los comentarios, por favor,
|
| 301 |
+
|
| 302 |
+
04:23.560 --> 04:25.760
|
| 303 |
+
por qué crees que sucede este tipo de cosas,
|
| 304 |
+
|
| 305 |
+
04:25.960 --> 04:29.760
|
| 306 |
+
porque en el código anterior lo tomó
|
| 307 |
+
justamente de variables internas
|
| 308 |
+
|
| 309 |
+
04:29.960 --> 04:31.960
|
| 310 |
+
y luego no lo tomó de variables internas.
|
| 311 |
+
|
| 312 |
+
04:32.160 --> 04:35.760
|
| 313 |
+
Aquí podemos ver que estas variables que
|
| 314 |
+
están arriba
|
| 315 |
+
|
| 316 |
+
04:35.960 --> 04:37.960
|
| 317 |
+
son las que priman en este
|
| 318 |
+
código
|
| 319 |
+
|
| 320 |
+
04:38.160 --> 04:41.160
|
| 321 |
+
y que esta función fue completamente ignorada.
|
| 322 |
+
|
| 323 |
+
04:41.160 --> 04:45.960
|
| 324 |
+
Revisemos este concepto justamente con
|
| 325 |
+
estas muñecas rusas
|
| 326 |
+
|
| 327 |
+
04:46.160 --> 04:49.360
|
| 328 |
+
que básicamente es una muñeca
|
| 329 |
+
gigante
|
| 330 |
+
|
| 331 |
+
04:49.560 --> 04:52.360
|
| 332 |
+
que puede almacenar otras muñecas por dentro,
|
| 333 |
+
|
| 334 |
+
04:52.560 --> 04:53.760
|
| 335 |
+
dependiendo de su
|
| 336 |
+
tamaño.
|
| 337 |
+
|
| 338 |
+
04:53.960 --> 04:57.760
|
| 339 |
+
Y así es como funciona el contexto de
|
| 340 |
+
ejecución en JavaScript.
|
| 341 |
+
|
| 342 |
+
04:57.960 --> 05:02.360
|
| 343 |
+
Resulta que podemos tener código que puede
|
| 344 |
+
almacenar otro código.
|
| 345 |
+
|
| 346 |
+
05:02.560 --> 05:04.960
|
| 347 |
+
Entonces, el contexto global sería
|
| 348 |
+
quién?
|
| 349 |
+
|
| 350 |
+
05:05.160 --> 05:06.560
|
| 351 |
+
La muñeca más
|
| 352 |
+
grande.
|
| 353 |
+
|
| 354 |
+
05:06.760 --> 05:08.360
|
| 355 |
+
Y el contexto local
|
| 356 |
+
sería,
|
| 357 |
+
|
| 358 |
+
05:08.560 --> 05:10.560
|
| 359 |
+
como haciendo la analogía con nuestro código,
|
| 360 |
+
|
| 361 |
+
05:10.560 --> 05:12.960
|
| 362 |
+
serían las funciones o ciertos
|
| 363 |
+
bloques
|
| 364 |
+
|
| 365 |
+
05:13.160 --> 05:14.960
|
| 366 |
+
que también nos podemos encontrar por ahí.
|
| 367 |
+
|
| 368 |
+
05:15.160 --> 05:19.560
|
| 369 |
+
Veamos esto en nuestro ejemplo número 2
|
| 370 |
+
que vimos hace ratico.
|
| 371 |
+
|
| 372 |
+
05:19.760 --> 05:23.160
|
| 373 |
+
Tenemos este código en donde el contexto
|
| 374 |
+
global,
|
| 375 |
+
|
| 376 |
+
05:23.360 --> 05:26.160
|
| 377 |
+
es decir, la muñeca más grande, sería
|
| 378 |
+
quién?
|
| 379 |
+
|
| 380 |
+
05:26.360 --> 05:28.160
|
| 381 |
+
Todas esas variables que escribimos
|
| 382 |
+
arriba
|
| 383 |
+
|
| 384 |
+
05:28.360 --> 05:30.960
|
| 385 |
+
y el console.log que está en la parte de
|
| 386 |
+
abajo,
|
| 387 |
+
|
| 388 |
+
05:31.160 --> 05:35.760
|
| 389 |
+
excepto la función, porque la función
|
| 390 |
+
sería el contexto local.
|
| 391 |
+
|
| 392 |
+
05:35.960 --> 05:39.760
|
| 393 |
+
¿Cuándo nosotros hablamos o cuándo podemos
|
| 394 |
+
saber esas diferencias?
|
| 395 |
+
|
| 396 |
+
05:39.760 --> 05:42.160
|
| 397 |
+
Pues justamente cuando tenemos llaves.
|
| 398 |
+
|
| 399 |
+
05:42.360 --> 05:44.360
|
| 400 |
+
En este caso, las llaves donde aparecen,
|
| 401 |
+
|
| 402 |
+
05:44.560 --> 05:46.560
|
| 403 |
+
cuando creamos una
|
| 404 |
+
función.
|
| 405 |
+
|
| 406 |
+
05:46.760 --> 05:50.160
|
| 407 |
+
Y ahí ya estamos hablando de que este es
|
| 408 |
+
una muñeca interna
|
| 409 |
+
|
| 410 |
+
05:50.360 --> 05:52.960
|
| 411 |
+
y justamente tendríamos un solo contexto
|
| 412 |
+
global
|
| 413 |
+
|
| 414 |
+
05:53.160 --> 05:55.360
|
| 415 |
+
que sería todo lo que esté por fuera de
|
| 416 |
+
las llaves,
|
| 417 |
+
|
| 418 |
+
05:55.560 --> 05:58.160
|
| 419 |
+
como su nombre lo indica en la parte global.
|
| 420 |
+
|
| 421 |
+
05:58.360 --> 06:01.560
|
| 422 |
+
Ahora, cosas que debemos tener súper
|
| 423 |
+
presentes.
|
| 424 |
+
|
| 425 |
+
06:01.760 --> 06:03.960
|
| 426 |
+
Uno, del contexto
|
| 427 |
+
global,
|
| 428 |
+
|
| 429 |
+
06:04.160 --> 06:07.760
|
| 430 |
+
no podemos acceder a contextos locales.
|
| 431 |
+
|
| 432 |
+
06:07.960 --> 06:09.160
|
| 433 |
+
Eso
|
| 434 |
+
no.
|
| 435 |
+
|
| 436 |
+
06:09.160 --> 06:12.360
|
| 437 |
+
Pero sí podemos, desde contextos locales,
|
| 438 |
+
|
| 439 |
+
06:12.560 --> 06:15.160
|
| 440 |
+
poder acceder a variables que estén
|
| 441 |
+
afuera
|
| 442 |
+
|
| 443 |
+
06:15.360 --> 06:16.960
|
| 444 |
+
o en ese contexto
|
| 445 |
+
global.
|
| 446 |
+
|
| 447 |
+
06:17.160 --> 06:18.760
|
| 448 |
+
Por eso, en el primer
|
| 449 |
+
ejemplo,
|
| 450 |
+
|
| 451 |
+
06:18.960 --> 06:21.560
|
| 452 |
+
nosotros sí podíamos acceder a
|
| 453 |
+
productName
|
| 454 |
+
|
| 455 |
+
06:21.760 --> 06:23.760
|
| 456 |
+
que estaba por fuera de la
|
| 457 |
+
función.
|
| 458 |
+
|
| 459 |
+
06:23.960 --> 06:25.960
|
| 460 |
+
Vamos ahora con otro
|
| 461 |
+
ejemplo.
|
| 462 |
+
|
| 463 |
+
06:26.160 --> 06:28.560
|
| 464 |
+
Tenemos este código de
|
| 465 |
+
acá,
|
| 466 |
+
|
| 467 |
+
06:28.760 --> 06:30.960
|
| 468 |
+
en donde inicialmente tenemos una variable,
|
| 469 |
+
|
| 470 |
+
06:31.160 --> 06:32.560
|
| 471 |
+
luego una
|
| 472 |
+
función,
|
| 473 |
+
|
| 474 |
+
06:32.760 --> 06:34.760
|
| 475 |
+
y dentro de la función tenemos
|
| 476 |
+
¿qué?
|
| 477 |
+
|
| 478 |
+
06:34.960 --> 06:35.960
|
| 479 |
+
Un
|
| 480 |
+
condicional.
|
| 481 |
+
|
| 482 |
+
06:36.160 --> 06:38.560
|
| 483 |
+
Si los puntos del usuario son menores a 100,
|
| 484 |
+
|
| 485 |
+
06:38.560 --> 06:40.760
|
| 486 |
+
va a suceder lo primero de ese
|
| 487 |
+
condicional
|
| 488 |
+
|
| 489 |
+
06:40.960 --> 06:44.160
|
| 490 |
+
y si no, va a suceder lo segundo de este
|
| 491 |
+
condicional.
|
| 492 |
+
|
| 493 |
+
06:44.360 --> 06:46.360
|
| 494 |
+
Y finalmente, tenemos un
|
| 495 |
+
Console.Log
|
| 496 |
+
|
| 497 |
+
06:46.560 --> 06:48.560
|
| 498 |
+
que nos ejecuta esta
|
| 499 |
+
función.
|
| 500 |
+
|
| 501 |
+
06:48.760 --> 06:51.560
|
| 502 |
+
Resulta que aquí lo importante es
|
| 503 |
+
definir
|
| 504 |
+
|
| 505 |
+
06:51.760 --> 06:53.760
|
| 506 |
+
¿quién es el contexto
|
| 507 |
+
global
|
| 508 |
+
|
| 509 |
+
06:53.960 --> 06:56.760
|
| 510 |
+
y quién es el contexto o contextos
|
| 511 |
+
locales?
|
| 512 |
+
|
| 513 |
+
06:56.960 --> 06:59.360
|
| 514 |
+
Así que cuéntame, por favor, en los
|
| 515 |
+
comentarios,
|
| 516 |
+
|
| 517 |
+
06:59.560 --> 07:00.960
|
| 518 |
+
si quieres tomarle un
|
| 519 |
+
screenshot,
|
| 520 |
+
|
| 521 |
+
07:01.160 --> 07:03.160
|
| 522 |
+
y trata de definir
|
| 523 |
+
justamente
|
| 524 |
+
|
| 525 |
+
07:03.360 --> 07:05.960
|
| 526 |
+
cuáles son los contextos que podemos
|
| 527 |
+
identificar acá,
|
| 528 |
+
|
| 529 |
+
07:05.960 --> 07:08.560
|
| 530 |
+
cuáles son los globales y cuáles son los
|
| 531 |
+
locales.
|
| 532 |
+
|
| 533 |
+
07:13.760 --> 07:16.760
|
| 534 |
+
Resulta que para eso tenemos que
|
| 535 |
+
identificar muy bien
|
| 536 |
+
|
| 537 |
+
07:16.960 --> 07:18.360
|
| 538 |
+
qué es un
|
| 539 |
+
bloque,
|
| 540 |
+
|
| 541 |
+
07:18.560 --> 07:20.960
|
| 542 |
+
porque de allí es que nosotros podemos
|
| 543 |
+
identificar
|
| 544 |
+
|
| 545 |
+
07:21.160 --> 07:23.160
|
| 546 |
+
esos contextos locales
|
| 547 |
+
justamente.
|
| 548 |
+
|
| 549 |
+
07:23.360 --> 07:24.960
|
| 550 |
+
¿Quiénes son esos
|
| 551 |
+
bloques?
|
| 552 |
+
|
| 553 |
+
07:25.160 --> 07:27.160
|
| 554 |
+
Bueno, primero puede ser una
|
| 555 |
+
función
|
| 556 |
+
|
| 557 |
+
07:27.360 --> 07:29.960
|
| 558 |
+
en donde vemos que abre y cierra con llaves,
|
| 559 |
+
|
| 560 |
+
07:30.160 --> 07:32.160
|
| 561 |
+
esa apertura y ese
|
| 562 |
+
cierre
|
| 563 |
+
|
| 564 |
+
07:32.360 --> 07:34.360
|
| 565 |
+
nos indica justamente que hay un bloque.
|
| 566 |
+
|
| 567 |
+
07:34.360 --> 07:36.360
|
| 568 |
+
¿En dónde más podemos ver
|
| 569 |
+
esto?
|
| 570 |
+
|
| 571 |
+
07:36.560 --> 07:38.560
|
| 572 |
+
En JavaScript, en For, en un
|
| 573 |
+
While,
|
| 574 |
+
|
| 575 |
+
07:38.760 --> 07:40.760
|
| 576 |
+
en un condicional como
|
| 577 |
+
NIF,
|
| 578 |
+
|
| 579 |
+
07:40.960 --> 07:42.960
|
| 580 |
+
y también si nosotros abrimos y
|
| 581 |
+
cerramos
|
| 582 |
+
|
| 583 |
+
07:43.160 --> 07:45.160
|
| 584 |
+
esas llaves de forma
|
| 585 |
+
sola.
|
| 586 |
+
|
| 587 |
+
07:45.360 --> 07:47.960
|
| 588 |
+
Ahora, tenemos este código
|
| 589 |
+
nuevamente
|
| 590 |
+
|
| 591 |
+
07:48.160 --> 07:51.160
|
| 592 |
+
y vamos a empezar a definir cuáles son
|
| 593 |
+
nuestros contextos
|
| 594 |
+
|
| 595 |
+
07:51.360 --> 07:53.760
|
| 596 |
+
o cuáles son los que podemos identificar
|
| 597 |
+
justamente.
|
| 598 |
+
|
| 599 |
+
07:53.960 --> 07:55.960
|
| 600 |
+
Tenemos en nuestra primera
|
| 601 |
+
instancia
|
| 602 |
+
|
| 603 |
+
07:56.160 --> 07:58.160
|
| 604 |
+
la variable que creamos
|
| 605 |
+
inicialmente
|
| 606 |
+
|
| 607 |
+
07:58.360 --> 07:59.960
|
| 608 |
+
que es
|
| 609 |
+
userPoints,
|
| 610 |
+
|
| 611 |
+
08:00.160 --> 08:02.160
|
| 612 |
+
eso estaría dentro del contexto global,
|
| 613 |
+
|
| 614 |
+
08:02.160 --> 08:04.160
|
| 615 |
+
y también nuestro
|
| 616 |
+
console.log.
|
| 617 |
+
|
| 618 |
+
08:04.360 --> 08:06.360
|
| 619 |
+
Ahí ya empezamos a
|
| 620 |
+
notar
|
| 621 |
+
|
| 622 |
+
08:06.560 --> 08:08.560
|
| 623 |
+
que nuestra función es un
|
| 624 |
+
bloque,
|
| 625 |
+
|
| 626 |
+
08:08.760 --> 08:11.760
|
| 627 |
+
porque ya vimos que abre y cierra con llaves,
|
| 628 |
+
|
| 629 |
+
08:11.960 --> 08:13.960
|
| 630 |
+
y está
|
| 631 |
+
opaco.
|
| 632 |
+
|
| 633 |
+
08:14.160 --> 08:16.160
|
| 634 |
+
Ese tema de que esté
|
| 635 |
+
opaco
|
| 636 |
+
|
| 637 |
+
08:16.360 --> 08:18.360
|
| 638 |
+
nos indica que
|
| 639 |
+
justamente
|
| 640 |
+
|
| 641 |
+
08:18.560 --> 08:20.560
|
| 642 |
+
es otro tipo de
|
| 643 |
+
bloque,
|
| 644 |
+
|
| 645 |
+
08:20.760 --> 08:22.760
|
| 646 |
+
y aquí ya empezamos a
|
| 647 |
+
decir
|
| 648 |
+
|
| 649 |
+
08:22.960 --> 08:24.960
|
| 650 |
+
que es un contexto
|
| 651 |
+
local.
|
| 652 |
+
|
| 653 |
+
08:25.160 --> 08:28.160
|
| 654 |
+
Este sería nuestro primer contexto local,
|
| 655 |
+
|
| 656 |
+
08:28.360 --> 08:30.360
|
| 657 |
+
el segundo sería este de
|
| 658 |
+
acá,
|
| 659 |
+
|
| 660 |
+
08:30.360 --> 08:32.360
|
| 661 |
+
y el tercero sería la segunda
|
| 662 |
+
parte
|
| 663 |
+
|
| 664 |
+
08:32.560 --> 08:34.560
|
| 665 |
+
de nuestro
|
| 666 |
+
condicional.
|
| 667 |
+
|
| 668 |
+
08:34.760 --> 08:36.760
|
| 669 |
+
Teniendo entonces un contexto global,
|
| 670 |
+
|
| 671 |
+
08:36.960 --> 08:38.960
|
| 672 |
+
y luego tenemos
|
| 673 |
+
ya
|
| 674 |
+
|
| 675 |
+
08:39.160 --> 08:41.160
|
| 676 |
+
varios contextos
|
| 677 |
+
locales.
|
| 678 |
+
|
| 679 |
+
08:41.360 --> 08:43.360
|
| 680 |
+
A eso es lo que se le
|
| 681 |
+
conoce
|
| 682 |
+
|
| 683 |
+
08:43.560 --> 08:45.560
|
| 684 |
+
con el nombre de
|
| 685 |
+
scopeChain
|
| 686 |
+
|
| 687 |
+
08:45.760 --> 08:47.760
|
| 688 |
+
o cadena de
|
| 689 |
+
alcances.
|
| 690 |
+
|
| 691 |
+
08:47.960 --> 08:49.960
|
| 692 |
+
Es decir, como su nombre lo
|
| 693 |
+
indica,
|
| 694 |
+
|
| 695 |
+
08:50.160 --> 08:52.160
|
| 696 |
+
esas variables, ¿a dónde tienen
|
| 697 |
+
alcance?
|
| 698 |
+
|
| 699 |
+
08:52.360 --> 08:54.360
|
| 700 |
+
Y como vimos en esta clase al principio,
|
| 701 |
+
|
| 702 |
+
08:54.560 --> 08:56.560
|
| 703 |
+
podemos ir del contexto
|
| 704 |
+
local
|
| 705 |
+
|
| 706 |
+
08:56.760 --> 08:58.760
|
| 707 |
+
al contexto
|
| 708 |
+
global,
|
| 709 |
+
|
| 710 |
+
08:58.760 --> 09:00.760
|
| 711 |
+
o de lo más
|
| 712 |
+
pequeño,
|
| 713 |
+
|
| 714 |
+
09:00.960 --> 09:02.960
|
| 715 |
+
de las muñecas más pequeñas a las más grandes,
|
| 716 |
+
|
| 717 |
+
09:03.160 --> 09:05.160
|
| 718 |
+
y no en el otro
|
| 719 |
+
sentido,
|
| 720 |
+
|
| 721 |
+
09:05.360 --> 09:07.360
|
| 722 |
+
de afuera hacia adentro, eso no lo podemos
|
| 723 |
+
hacer.
|
| 724 |
+
|
| 725 |
+
09:07.560 --> 09:09.560
|
| 726 |
+
Ahora veamos el último
|
| 727 |
+
ejemplo.
|
| 728 |
+
|
| 729 |
+
09:09.760 --> 09:11.760
|
| 730 |
+
Tenemos una
|
| 731 |
+
variable
|
| 732 |
+
|
| 733 |
+
09:11.960 --> 09:13.960
|
| 734 |
+
que se llama
|
| 735 |
+
globalVariable,
|
| 736 |
+
|
| 737 |
+
09:14.160 --> 09:16.160
|
| 738 |
+
que está declarada y asignada con const.
|
| 739 |
+
|
| 740 |
+
09:16.360 --> 09:18.360
|
| 741 |
+
Luego tenemos una
|
| 742 |
+
función
|
| 743 |
+
|
| 744 |
+
09:18.560 --> 09:20.560
|
| 745 |
+
que se llama
|
| 746 |
+
local1,
|
| 747 |
+
|
| 748 |
+
09:20.760 --> 09:22.760
|
| 749 |
+
y dentro tenemos dos
|
| 750 |
+
console.log,
|
| 751 |
+
|
| 752 |
+
09:22.960 --> 09:24.960
|
| 753 |
+
inicialmente.
|
| 754 |
+
|
| 755 |
+
09:25.160 --> 09:27.160
|
| 756 |
+
El primer console.log dice
|
| 757 |
+
global1,
|
| 758 |
+
|
| 759 |
+
09:27.160 --> 09:29.160
|
| 760 |
+
y el segundo dice
|
| 761 |
+
local1.
|
| 762 |
+
|
| 763 |
+
09:29.360 --> 09:31.360
|
| 764 |
+
Luego tenemos una
|
| 765 |
+
función,
|
| 766 |
+
|
| 767 |
+
09:31.560 --> 09:33.560
|
| 768 |
+
también por dentro tiene un console.
|
| 769 |
+
log,
|
| 770 |
+
|
| 771 |
+
09:33.760 --> 09:35.760
|
| 772 |
+
tenemos otra función que se llama local3,
|
| 773 |
+
|
| 774 |
+
09:35.960 --> 09:37.960
|
| 775 |
+
también tiene un
|
| 776 |
+
console.log,
|
| 777 |
+
|
| 778 |
+
09:38.160 --> 09:40.160
|
| 779 |
+
y en la primera
|
| 780 |
+
función,
|
| 781 |
+
|
| 782 |
+
09:40.360 --> 09:42.360
|
| 783 |
+
en la
|
| 784 |
+
grande,
|
| 785 |
+
|
| 786 |
+
09:42.560 --> 09:44.560
|
| 787 |
+
tenemos la
|
| 788 |
+
ejecución
|
| 789 |
+
|
| 790 |
+
09:44.760 --> 09:46.760
|
| 791 |
+
de las dos funciones que son internas.
|
| 792 |
+
|
| 793 |
+
09:46.960 --> 09:48.960
|
| 794 |
+
Y luego ya en nuestro contexto
|
| 795 |
+
global
|
| 796 |
+
|
| 797 |
+
09:49.160 --> 09:51.160
|
| 798 |
+
tenemos un
|
| 799 |
+
console.log
|
| 800 |
+
|
| 801 |
+
09:51.360 --> 09:53.360
|
| 802 |
+
que nos ejecuta esa función
|
| 803 |
+
grande
|
| 804 |
+
|
| 805 |
+
09:53.560 --> 09:55.560
|
| 806 |
+
que es
|
| 807 |
+
local1.
|
| 808 |
+
|
| 809 |
+
09:55.560 --> 09:57.560
|
| 810 |
+
Y aquí tenemos justamente
|
| 811 |
+
global1
|
| 812 |
+
|
| 813 |
+
09:57.760 --> 09:59.760
|
| 814 |
+
y una carita
|
| 815 |
+
feliz,
|
| 816 |
+
|
| 817 |
+
09:59.960 --> 10:01.960
|
| 818 |
+
pero resulta que en el segundo console.
|
| 819 |
+
log
|
| 820 |
+
|
| 821 |
+
10:02.160 --> 10:04.160
|
| 822 |
+
él ya nos dice que hay un
|
| 823 |
+
error.
|
| 824 |
+
|
| 825 |
+
10:04.360 --> 10:06.360
|
| 826 |
+
Dice, ey, pues qué
|
| 827 |
+
pena,
|
| 828 |
+
|
| 829 |
+
10:06.560 --> 10:08.560
|
| 830 |
+
pero localVariable no está definido.
|
| 831 |
+
|
| 832 |
+
10:08.760 --> 10:10.760
|
| 833 |
+
Resulta que aquí lo que está
|
| 834 |
+
sucediendo
|
| 835 |
+
|
| 836 |
+
10:10.960 --> 10:12.960
|
| 837 |
+
es que precisamente esa
|
| 838 |
+
función,
|
| 839 |
+
|
| 840 |
+
10:13.160 --> 10:15.160
|
| 841 |
+
como ya tenemos un contexto
|
| 842 |
+
local,
|
| 843 |
+
|
| 844 |
+
10:15.360 --> 10:17.360
|
| 845 |
+
dice, localVariable no está
|
| 846 |
+
acá,
|
| 847 |
+
|
| 848 |
+
10:17.560 --> 10:19.560
|
| 849 |
+
¿qué tengo que
|
| 850 |
+
hacer?
|
| 851 |
+
|
| 852 |
+
10:19.760 --> 10:21.760
|
| 853 |
+
Bueno, ir a mirar al contexto global,
|
| 854 |
+
|
| 855 |
+
10:21.960 --> 10:23.960
|
| 856 |
+
es decir, salirme de esa función a ver si
|
| 857 |
+
existe.
|
| 858 |
+
|
| 859 |
+
10:23.960 --> 10:25.960
|
| 860 |
+
Y bueno, como no existe, pues va a salir
|
| 861 |
+
un error.
|
| 862 |
+
|
| 863 |
+
10:26.160 --> 10:28.160
|
| 864 |
+
Ahora, lo que vamos a
|
| 865 |
+
hacer
|
| 866 |
+
|
| 867 |
+
10:28.360 --> 10:30.360
|
| 868 |
+
es comentar ese
|
| 869 |
+
console.log,
|
| 870 |
+
|
| 871 |
+
10:30.560 --> 10:32.560
|
| 872 |
+
ese
|
| 873 |
+
segundo,
|
| 874 |
+
|
| 875 |
+
10:32.760 --> 10:34.760
|
| 876 |
+
que nos está saliendo ese
|
| 877 |
+
error,
|
| 878 |
+
|
| 879 |
+
10:34.960 --> 10:36.960
|
| 880 |
+
y vamos a seguir ejecutando nuestro
|
| 881 |
+
código
|
| 882 |
+
|
| 883 |
+
10:37.160 --> 10:39.160
|
| 884 |
+
a ver qué
|
| 885 |
+
sucede.
|
| 886 |
+
|
| 887 |
+
10:39.360 --> 10:41.360
|
| 888 |
+
Ahora, cuéntame en los
|
| 889 |
+
comentarios,
|
| 890 |
+
|
| 891 |
+
10:41.560 --> 10:43.560
|
| 892 |
+
haciendo ese comentario del console.
|
| 893 |
+
log,
|
| 894 |
+
|
| 895 |
+
10:43.760 --> 10:45.760
|
| 896 |
+
¿cuál es la
|
| 897 |
+
salida?
|
| 898 |
+
|
| 899 |
+
10:45.960 --> 10:47.960
|
| 900 |
+
La salida justamente es
|
| 901 |
+
global1,
|
| 902 |
+
|
| 903 |
+
10:48.160 --> 10:50.160
|
| 904 |
+
la carita
|
| 905 |
+
feliz,
|
| 906 |
+
|
| 907 |
+
10:50.360 --> 10:52.360
|
| 908 |
+
y luego vemos que pasa a la función
|
| 909 |
+
interna
|
| 910 |
+
|
| 911 |
+
10:52.360 --> 10:54.360
|
| 912 |
+
que se llama
|
| 913 |
+
local2.
|
| 914 |
+
|
| 915 |
+
10:54.560 --> 10:56.560
|
| 916 |
+
Ahí tenemos un
|
| 917 |
+
console.log
|
| 918 |
+
|
| 919 |
+
10:56.760 --> 10:58.760
|
| 920 |
+
que dice
|
| 921 |
+
local2,
|
| 922 |
+
|
| 923 |
+
10:58.960 --> 11:00.960
|
| 924 |
+
y va a tomar esa variable que se llama carrot.
|
| 925 |
+
|
| 926 |
+
11:01.160 --> 11:03.160
|
| 927 |
+
Y
|
| 928 |
+
justamente
|
| 929 |
+
|
| 930 |
+
11:03.360 --> 11:05.360
|
| 931 |
+
nos sale en la salida del
|
| 932 |
+
código
|
| 933 |
+
|
| 934 |
+
11:05.560 --> 11:07.560
|
| 935 |
+
local2 y el
|
| 936 |
+
emoji,
|
| 937 |
+
|
| 938 |
+
11:07.760 --> 11:09.760
|
| 939 |
+
o el emoticón de esta
|
| 940 |
+
zanahoria.
|
| 941 |
+
|
| 942 |
+
11:09.960 --> 11:11.960
|
| 943 |
+
Y
|
| 944 |
+
luego
|
| 945 |
+
|
| 946 |
+
11:12.160 --> 11:14.160
|
| 947 |
+
pasamos a la función que dice local3.
|
| 948 |
+
|
| 949 |
+
11:14.360 --> 11:16.360
|
| 950 |
+
Ahí tenemos un
|
| 951 |
+
console.log
|
| 952 |
+
|
| 953 |
+
11:16.560 --> 11:18.560
|
| 954 |
+
que dice
|
| 955 |
+
local3,
|
| 956 |
+
|
| 957 |
+
11:18.760 --> 11:20.760
|
| 958 |
+
y seguido esa
|
| 959 |
+
variable
|
| 960 |
+
|
| 961 |
+
11:20.760 --> 11:22.760
|
| 962 |
+
que se llama
|
| 963 |
+
carrot.
|
| 964 |
+
|
| 965 |
+
11:22.960 --> 11:24.960
|
| 966 |
+
Resulta que como en esta
|
| 967 |
+
función
|
| 968 |
+
|
| 969 |
+
11:25.160 --> 11:27.160
|
| 970 |
+
de local3 no
|
| 971 |
+
tenemos
|
| 972 |
+
|
| 973 |
+
11:27.360 --> 11:29.360
|
| 974 |
+
internamente ninguna variable que se
|
| 975 |
+
llame
|
| 976 |
+
|
| 977 |
+
11:29.560 --> 11:31.560
|
| 978 |
+
de esa forma, pues ¿el qué va a
|
| 979 |
+
hacer?
|
| 980 |
+
|
| 981 |
+
11:31.760 --> 11:33.760
|
| 982 |
+
Bueno, yo soy contexto local, voy a
|
| 983 |
+
mirar
|
| 984 |
+
|
| 985 |
+
11:33.960 --> 11:35.960
|
| 986 |
+
en el contexto global, que en este
|
| 987 |
+
caso
|
| 988 |
+
|
| 989 |
+
11:36.160 --> 11:38.160
|
| 990 |
+
quién sería, una función más arriba,
|
| 991 |
+
|
| 992 |
+
11:38.360 --> 11:40.360
|
| 993 |
+
es decir, la que dice
|
| 994 |
+
local1,
|
| 995 |
+
|
| 996 |
+
11:40.560 --> 11:42.560
|
| 997 |
+
ahí tampoco hay una variable que se llame
|
| 998 |
+
carrot,
|
| 999 |
+
|
| 1000 |
+
11:42.760 --> 11:44.760
|
| 1001 |
+
y él lo que hace es salirse otra
|
| 1002 |
+
vez
|
| 1003 |
+
|
| 1004 |
+
11:44.960 --> 11:46.960
|
| 1005 |
+
de ese contexto, ya llegaría al
|
| 1006 |
+
contexto
|
| 1007 |
+
|
| 1008 |
+
11:47.160 --> 11:49.160
|
| 1009 |
+
global que sería donde está el global
|
| 1010 |
+
variable,
|
| 1011 |
+
|
| 1012 |
+
11:49.160 --> 11:51.160
|
| 1013 |
+
tampoco encuentra la
|
| 1014 |
+
variable
|
| 1015 |
+
|
| 1016 |
+
11:51.360 --> 11:53.360
|
| 1017 |
+
carrot, y lo que hace es
|
| 1018 |
+
salir
|
| 1019 |
+
|
| 1020 |
+
11:53.560 --> 11:55.560
|
| 1021 |
+
justamente un error, porque no lo encontró.
|
| 1022 |
+
|
| 1023 |
+
11:55.760 --> 11:57.760
|
| 1024 |
+
Es decir, que entre
|
| 1025 |
+
contextos
|
| 1026 |
+
|
| 1027 |
+
11:57.960 --> 11:59.960
|
| 1028 |
+
locales, como lo es
|
| 1029 |
+
local3
|
| 1030 |
+
|
| 1031 |
+
12:00.160 --> 12:02.160
|
| 1032 |
+
y local2, no se
|
| 1033 |
+
pueden
|
| 1034 |
+
|
| 1035 |
+
12:02.360 --> 12:04.360
|
| 1036 |
+
comunicar. Lo único que podemos
|
| 1037 |
+
hacer
|
| 1038 |
+
|
| 1039 |
+
12:04.560 --> 12:06.560
|
| 1040 |
+
es como las muñecas, ir
|
| 1041 |
+
de
|
| 1042 |
+
|
| 1043 |
+
12:06.760 --> 12:08.760
|
| 1044 |
+
pequeña a grande, y no
|
| 1045 |
+
podemos
|
| 1046 |
+
|
| 1047 |
+
12:08.960 --> 12:10.960
|
| 1048 |
+
comunicarnos entre
|
| 1049 |
+
muñecas
|
| 1050 |
+
|
| 1051 |
+
12:11.160 --> 12:13.160
|
| 1052 |
+
iguales, que en este caso, ¿quiénes serían
|
| 1053 |
+
las internas?
|
| 1054 |
+
|
| 1055 |
+
12:13.360 --> 12:15.360
|
| 1056 |
+
local2 y
|
| 1057 |
+
local3.
|
| 1058 |
+
|
| 1059 |
+
12:15.560 --> 12:17.560
|
| 1060 |
+
Y por eso tenemos ese
|
| 1061 |
+
error.
|
| 1062 |
+
|
| 1063 |
+
12:17.560 --> 12:19.560
|
| 1064 |
+
Cuéntame, por favor, si te
|
| 1065 |
+
esperabas
|
| 1066 |
+
|
| 1067 |
+
12:19.560 --> 12:47.560
|
| 1068 |
+
este resultado en este
|
| 1069 |
+
código.
|
| 1070 |
+
|
subir/Curso de Fundamentos de JavaScript/03-Funciones y This/06-Closures y Ámbito Léxico en JavaScript.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:1aea2675a35e350e23e984c94860af990a21f456007af5e6f69cb794f7367a5a
|
| 3 |
+
size 45913818
|
subir/Curso de Fundamentos de JavaScript/03-Funciones y This/06-Closures y Ámbito Léxico en JavaScript.vtt
ADDED
|
@@ -0,0 +1,324 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:00.000 --> 00:03.280
|
| 4 |
+
En esta clase vamos a estar hablando sobre
|
| 5 |
+
los closures.
|
| 6 |
+
|
| 7 |
+
00:03.600 --> 00:09.840
|
| 8 |
+
Para ello vamos a revisar su definición
|
| 9 |
+
que es básicamente una función que tiene acceso a
|
| 10 |
+
|
| 11 |
+
00:10.360 --> 00:16.760
|
| 12 |
+
variables de un ámbito externo, incluso
|
| 13 |
+
después de que esta función ya haya terminado de ejecutarse.
|
| 14 |
+
|
| 15 |
+
00:17.520 --> 00:18.680
|
| 16 |
+
Para
|
| 17 |
+
|
| 18 |
+
00:18.680 --> 00:24.200
|
| 19 |
+
extender muy bien los closures también
|
| 20 |
+
debemos entender otro concepto que se llama el ámbito léxico,
|
| 21 |
+
|
| 22 |
+
00:24.200 --> 00:30.920
|
| 23 |
+
que es justamente cuando una función se
|
| 24 |
+
declara, bueno se crea precisamente este ámbito léxico, y
|
| 25 |
+
|
| 26 |
+
00:31.080 --> 00:37.960
|
| 27 |
+
esto indica que esa función puede acceder
|
| 28 |
+
a variables dentro de ese ámbito y a las variables de
|
| 29 |
+
|
| 30 |
+
00:38.240 --> 00:44.160
|
| 31 |
+
ámbitos que son superiores. Vamos a
|
| 32 |
+
entender esto con un ejemplo. Para ello vamos a crear una función
|
| 33 |
+
|
| 34 |
+
00:44.760 --> 00:50.600
|
| 35 |
+
y esta función se va a llamar other function,
|
| 36 |
+
y vamos a crearla con
|
| 37 |
+
|
| 38 |
+
00:50.600 --> 00:57.880
|
| 39 |
+
justamente una variable que se llama other
|
| 40 |
+
variable, variable, y allí vamos a crear un
|
| 41 |
+
|
| 42 |
+
00:58.480 --> 01:01.860
|
| 43 |
+
string que en este caso va a ser I am
|
| 44 |
+
from
|
| 45 |
+
|
| 46 |
+
01:02.640 --> 01:04.360
|
| 47 |
+
other
|
| 48 |
+
function.
|
| 49 |
+
|
| 50 |
+
01:04.360 --> 01:12.120
|
| 51 |
+
Y seguido de esto vamos a crear, por supuesto,
|
| 52 |
+
otra función. Esta función va a ser lo opuesto a esta, es decir,
|
| 53 |
+
|
| 54 |
+
01:12.120 --> 01:14.960
|
| 55 |
+
que se va a llamar en vez de other, inner.
|
| 56 |
+
|
| 57 |
+
01:14.960 --> 01:20.060
|
| 58 |
+
Y dentro de esta función vamos a colocar
|
| 59 |
+
un console.log,
|
| 60 |
+
|
| 61 |
+
01:20.360 --> 01:27.960
|
| 62 |
+
console.log, en donde vamos a colocar la,
|
| 63 |
+
esta variable para que no la imprima, voy a colocar un espacio por acá,
|
| 64 |
+
|
| 65 |
+
01:28.360 --> 01:34.540
|
| 66 |
+
y finalmente vamos a retornar ¿quién?
|
| 67 |
+
Vamos a retornar esta función que está acá.
|
| 68 |
+
|
| 69 |
+
01:35.200 --> 01:41.600
|
| 70 |
+
Ahora vamos a finalmente colocar una
|
| 71 |
+
variable que se va a llamar closure
|
| 72 |
+
|
| 73 |
+
01:41.600 --> 01:43.920
|
| 74 |
+
example,
|
| 75 |
+
|
| 76 |
+
01:43.920 --> 01:50.760
|
| 77 |
+
example, y vamos a ejecutar esta función
|
| 78 |
+
inicial que creamos. Seguido vamos a ejecutar
|
| 79 |
+
|
| 80 |
+
01:51.360 --> 01:59.120
|
| 81 |
+
esto que hicimos acá. ¿Qué estamos
|
| 82 |
+
haciendo? Una función que tiene una variable, que por dentro también tiene una función,
|
| 83 |
+
|
| 84 |
+
01:59.680 --> 02:05.720
|
| 85 |
+
recordemos estos conceptos que estamos
|
| 86 |
+
viendo acá de ámbito léxico, que es justamente que esta función
|
| 87 |
+
|
| 88 |
+
02:05.720 --> 02:12.440
|
| 89 |
+
cuando se crea, se crea algo llamado
|
| 90 |
+
ámbito léxico, pero que si yo tengo otra función para aquí adentro,
|
| 91 |
+
|
| 92 |
+
02:12.800 --> 02:19.800
|
| 93 |
+
también se va a crear otro ámbito léxico.
|
| 94 |
+
Esta función puede acceder a todo lo que tenga por dentro y también a
|
| 95 |
+
|
| 96 |
+
02:19.920 --> 02:25.320
|
| 97 |
+
todo lo que tenga por fuera. Vamos a
|
| 98 |
+
revisar esto, entonces vamos a guardar y vamos a colocar
|
| 99 |
+
|
| 100 |
+
02:25.760 --> 02:33.000
|
| 101 |
+
la ejecución del programa, voy a subir
|
| 102 |
+
esto un poco y aquí vamos a ver qué dice I am from other function.
|
| 103 |
+
|
| 104 |
+
02:33.000 --> 02:40.840
|
| 105 |
+
¿Eso qué quiere decir? Que esta función
|
| 106 |
+
accedió justamente a todo lo que estaba por fuera y esto es precisamente la definición de un closure,
|
| 107 |
+
|
| 108 |
+
02:40.840 --> 02:47.480
|
| 109 |
+
es precisamente que nosotros podamos
|
| 110 |
+
acceder a aquellas variables que estén en la parte externa de esta función.
|
| 111 |
+
|
| 112 |
+
02:47.920 --> 02:55.160
|
| 113 |
+
Ahora, hay que también tener cuidado con
|
| 114 |
+
el tema de los closures, vamos a revisar porque vamos a crear una función
|
| 115 |
+
|
| 116 |
+
02:55.600 --> 03:00.480
|
| 117 |
+
que se llame create counter y resulta que
|
| 118 |
+
esta función
|
| 119 |
+
|
| 120 |
+
03:00.480 --> 03:08.000
|
| 121 |
+
precisamente nos va a crear un contador,
|
| 122 |
+
lo vamos a escribir de la siguiente manera, creando una variable que se llame count
|
| 123 |
+
|
| 124 |
+
03:08.240 --> 03:11.800
|
| 125 |
+
y se va a inicializar con este valor en 0.
|
| 126 |
+
|
| 127 |
+
03:12.600 --> 03:18.240
|
| 128 |
+
Seguido de esto vamos a colocar un return
|
| 129 |
+
de otra función, ahí estamos creando por supuesto nuestro closure,
|
| 130 |
+
|
| 131 |
+
03:18.320 --> 03:23.840
|
| 132 |
+
con esa función interna que va a acceder a
|
| 133 |
+
lo externo y vamos a colocar nuestra variable
|
| 134 |
+
|
| 135 |
+
03:23.840 --> 03:31.720
|
| 136 |
+
adentro y vamos a decirle más más, esto es
|
| 137 |
+
posible precisamente por el tema del closure que puede acceder a estas variables que están externas.
|
| 138 |
+
|
| 139 |
+
03:32.240 --> 03:37.080
|
| 140 |
+
Seguido vamos a colocar un console.log de
|
| 141 |
+
quién, de esta variable count
|
| 142 |
+
|
| 143 |
+
03:37.640 --> 03:43.320
|
| 144 |
+
y luego lo que vamos a hacer es crear una
|
| 145 |
+
serie de variables para poder ejecutar ese contador.
|
| 146 |
+
|
| 147 |
+
03:43.640 --> 03:45.800
|
| 148 |
+
Entonces colocamos
|
| 149 |
+
const,
|
| 150 |
+
|
| 151 |
+
03:47.080 --> 03:51.400
|
| 152 |
+
counter a, puede ser cualquier cosa en
|
| 153 |
+
este momento y vamos a ejecutar
|
| 154 |
+
|
| 155 |
+
03:51.400 --> 03:56.120
|
| 156 |
+
esta función, entonces venimos acá, la
|
| 157 |
+
ejecutamos y luego
|
| 158 |
+
|
| 159 |
+
03:56.640 --> 04:04.560
|
| 160 |
+
cogemos esta variable y la empezamos
|
| 161 |
+
también a ejecutar, entonces tenemos counter a una vez y otra vez y vamos a hacer esto mismo
|
| 162 |
+
|
| 163 |
+
04:04.800 --> 04:12.280
|
| 164 |
+
con otra, con otra variable, en este caso
|
| 165 |
+
la vamos a llamar b, también va a ejecutar esta función y aquí vamos a ejecutar
|
| 166 |
+
|
| 167 |
+
04:12.680 --> 04:16.000
|
| 168 |
+
esta counter b, vamos a revisar qué es lo
|
| 169 |
+
que está pasando.
|
| 170 |
+
|
| 171 |
+
04:16.000 --> 04:24.400
|
| 172 |
+
Ejecutamos acá nuevamente nuestro programa
|
| 173 |
+
y aquí nos sale lo que teníamos inicialmente de la función que hicimos ahorita
|
| 174 |
+
|
| 175 |
+
04:24.400 --> 04:30.600
|
| 176 |
+
y acá ya empieza nuestra ejecución del
|
| 177 |
+
programa, el segundo programa, 1, 2 y 1.
|
| 178 |
+
|
| 179 |
+
04:31.240 --> 04:34.000
|
| 180 |
+
Resulta que él ya empieza a tener
|
| 181 |
+
problemas de memoria
|
| 182 |
+
|
| 183 |
+
04:34.680 --> 04:40.840
|
| 184 |
+
justamente porque a pesar de que es la
|
| 185 |
+
misma función, él aquí almacena unos valores pero aquí también se almacenan
|
| 186 |
+
|
| 187 |
+
04:40.840 --> 04:47.400
|
| 188 |
+
otros valores y justamente por eso es que
|
| 189 |
+
debemos tener cuidado con los closures para no excedernos en este uso de la memoria.
|
| 190 |
+
|
| 191 |
+
04:47.760 --> 04:53.880
|
| 192 |
+
Por otro lado nosotros también podemos
|
| 193 |
+
tener diferentes tipos de contextos en los closures,
|
| 194 |
+
|
| 195 |
+
04:54.360 --> 05:01.040
|
| 196 |
+
como así, voy a bajar esta terminal un
|
| 197 |
+
poco y voy a empezar a escribir otra función, esta función se va a llamar
|
| 198 |
+
|
| 199 |
+
05:01.320 --> 05:06.760
|
| 200 |
+
order por ejemplo y por dentro lo que voy
|
| 201 |
+
a colocar es una variable que se llame
|
| 202 |
+
|
| 203 |
+
05:06.760 --> 05:13.680
|
| 204 |
+
message y que diga por ejemplo hello,
|
| 205 |
+
este hello va a tener una coma y un espacio, ¿por qué?
|
| 206 |
+
|
| 207 |
+
05:13.880 --> 05:15.880
|
| 208 |
+
porque vamos a empezar a escribir un
|
| 209 |
+
mensaje
|
| 210 |
+
|
| 211 |
+
05:16.640 --> 05:24.320
|
| 212 |
+
diferente, es decir con ambos tipos de
|
| 213 |
+
contextos, con varios, en donde vamos a saludar a una persona y luego vamos a saludar a otra persona.
|
| 214 |
+
|
| 215 |
+
05:24.720 --> 05:32.400
|
| 216 |
+
¿Cómo lo haríamos con el tema de closures?
|
| 217 |
+
Vamos a colocar otra función interna, voy a copiarme acá de esta parte
|
| 218 |
+
|
| 219 |
+
05:32.760 --> 05:35.440
|
| 220 |
+
y en vez de order voy a colocarle
|
| 221 |
+
inner
|
| 222 |
+
|
| 223 |
+
05:35.440 --> 05:37.440
|
| 224 |
+
y acá voy a
|
| 225 |
+
recibir
|
| 226 |
+
|
| 227 |
+
05:38.440 --> 05:46.080
|
| 228 |
+
justamente un argumento, un parámetro para
|
| 229 |
+
poder saludar a diferentes tipos de personas, entonces por ejemplo acá le voy a colocar name para que él
|
| 230 |
+
|
| 231 |
+
05:46.120 --> 05:54.160
|
| 232 |
+
reciba el nombre de diferentes personas y
|
| 233 |
+
por dentro voy a colocar un console.log de quién, de este mensaje,
|
| 234 |
+
|
| 235 |
+
05:54.280 --> 06:00.320
|
| 236 |
+
recordemos que aquí empieza el tema del
|
| 237 |
+
closure porque puede acceder a variables externas y adicional voy a
|
| 238 |
+
|
| 239 |
+
06:00.320 --> 06:08.200
|
| 240 |
+
concatenarle, ¿quién? El nombre que le
|
| 241 |
+
acabé de ingresar aquí y justamente en esta función vamos a retornar ¿quién?
|
| 242 |
+
|
| 243 |
+
06:08.400 --> 06:11.840
|
| 244 |
+
inner, aquí me le puse una una t pero ya
|
| 245 |
+
la voy a borrar.
|
| 246 |
+
|
| 247 |
+
06:12.360 --> 06:14.440
|
| 248 |
+
Listo, ahora lo que hacemos
|
| 249 |
+
es
|
| 250 |
+
|
| 251 |
+
06:15.160 --> 06:17.800
|
| 252 |
+
crearnos dos variables, una se va a
|
| 253 |
+
llamar
|
| 254 |
+
|
| 255 |
+
06:18.840 --> 06:20.840
|
| 256 |
+
closure
|
| 257 |
+
a...
|
| 258 |
+
|
| 259 |
+
06:21.640 --> 06:23.640
|
| 260 |
+
closure...
|
| 261 |
+
|
| 262 |
+
06:24.360 --> 06:28.760
|
| 263 |
+
de a y aquí vamos a ejecutar esta función,
|
| 264 |
+
|
| 265 |
+
06:28.760 --> 06:35.200
|
| 266 |
+
solamente tendría que ir ejecutada y aquí
|
| 267 |
+
hacemos exactamente lo mismo pero con closure b.
|
| 268 |
+
|
| 269 |
+
06:35.920 --> 06:41.880
|
| 270 |
+
Ahora lo que hacemos es colocar un console.
|
| 271 |
+
log para ambas variables que en este caso sería closure a,
|
| 272 |
+
|
| 273 |
+
06:42.840 --> 06:48.080
|
| 274 |
+
sin el console.log también lo podemos
|
| 275 |
+
hacer closure a, la ejecutamos y por dentro le colocamos
|
| 276 |
+
|
| 277 |
+
06:48.160 --> 06:52.760
|
| 278 |
+
ahora sí el nombre que queremos que vaya,
|
| 279 |
+
que en este caso puede ser por ejemplo Alicia
|
| 280 |
+
|
| 281 |
+
06:52.760 --> 07:00.720
|
| 282 |
+
y vamos a colocar otro nombre por ejemplo Bob,
|
| 283 |
+
ahora sí guardamos, ejecutamos nuestro código, voy a subir un poco esta
|
| 284 |
+
|
| 285 |
+
07:01.160 --> 07:09.080
|
| 286 |
+
terminal y allí vamos a darnos cuenta que
|
| 287 |
+
tenemos hello Alice y hello Bob, como podemos darnos cuenta tenemos
|
| 288 |
+
|
| 289 |
+
07:09.640 --> 07:13.240
|
| 290 |
+
una función, por dentro tenemos otra
|
| 291 |
+
función que
|
| 292 |
+
|
| 293 |
+
07:13.760 --> 07:19.000
|
| 294 |
+
permite justamente el ingreso de un nombre
|
| 295 |
+
y también el acceso a un mensaje
|
| 296 |
+
|
| 297 |
+
07:19.000 --> 07:26.600
|
| 298 |
+
externo y allí es donde vemos el contexto
|
| 299 |
+
que en este caso es para Alicia y también otro
|
| 300 |
+
|
| 301 |
+
07:26.600 --> 07:32.360
|
| 302 |
+
contexto que sería para Bob, esas son
|
| 303 |
+
cosas que también podemos utilizar con el tema de los clusures.
|
| 304 |
+
|
| 305 |
+
07:32.840 --> 07:38.520
|
| 306 |
+
Con los clusures entonces podemos darnos
|
| 307 |
+
cuenta de que podemos trabajar con diferentes tipos de ámbitos,
|
| 308 |
+
|
| 309 |
+
07:38.600 --> 07:43.360
|
| 310 |
+
así como lo vimos en la definición inicial
|
| 311 |
+
y también podemos crear funciones
|
| 312 |
+
|
| 313 |
+
07:43.360 --> 07:49.920
|
| 314 |
+
flexibles, que en este caso hay que tener
|
| 315 |
+
en cuenta que esto lo debemos evitar para el tema del almacenamiento de memoria,
|
| 316 |
+
|
| 317 |
+
07:50.000 --> 07:54.560
|
| 318 |
+
pero que en este tipo de casos nos permite
|
| 319 |
+
una flexibilidad de tener diferentes tipos de
|
| 320 |
+
|
| 321 |
+
07:54.560 --> 08:14.000
|
| 322 |
+
contextos y que nosotros podamos ya darle
|
| 323 |
+
un manejo un poco más flexible a nuestro código.
|
| 324 |
+
|
subir/Curso de Fundamentos de JavaScript/03-Funciones y This/06-Lecturas recomendadas.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://github.com/platzi/basico-js
|
subir/Curso de Fundamentos de JavaScript/03-Funciones y This/06-Resumen.html
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
subir/Curso de Fundamentos de JavaScript/03-Funciones y This/06-clase-closures_ca9f5104-7c66-4fa3-9401-38f3ef032eef.js
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/*
|
| 2 |
+
CLOSURE: función que tiene acceso a variables de un ámbito externo,
|
| 3 |
+
incluso después de que esa función haya terminado de ejecutarse.
|
| 4 |
+
|
| 5 |
+
Ámbito léxico: cada vez que se declara una función,
|
| 6 |
+
crea su propio ámbito léxico, y puede acceder a las variables
|
| 7 |
+
dentro de ese ámbito y a las variables en ámbitos superiores.
|
| 8 |
+
*/
|
| 9 |
+
|
| 10 |
+
function outerFunction () {
|
| 11 |
+
let outerVariable = "I am from outer function"
|
| 12 |
+
|
| 13 |
+
function innterFunction () {
|
| 14 |
+
console.log(outerVariable)
|
| 15 |
+
}
|
| 16 |
+
|
| 17 |
+
return innterFunction
|
| 18 |
+
}
|
| 19 |
+
|
| 20 |
+
const closureExample = outerFunction()
|
| 21 |
+
closureExample()
|
| 22 |
+
|
| 23 |
+
function createCounter () {
|
| 24 |
+
let count = 0
|
| 25 |
+
|
| 26 |
+
return function() {
|
| 27 |
+
count++
|
| 28 |
+
console.log(count)
|
| 29 |
+
}
|
| 30 |
+
}
|
| 31 |
+
|
| 32 |
+
const counterA = createCounter()
|
| 33 |
+
counterA()
|
| 34 |
+
counterA()
|
| 35 |
+
|
| 36 |
+
const counterB = createCounter()
|
| 37 |
+
counterB()
|
| 38 |
+
|
| 39 |
+
function outer () {
|
| 40 |
+
let message = "Hello, "
|
| 41 |
+
|
| 42 |
+
function inner (name) {
|
| 43 |
+
console.log(message + name)
|
| 44 |
+
}
|
| 45 |
+
|
| 46 |
+
return inner
|
| 47 |
+
}
|
| 48 |
+
|
| 49 |
+
const closureA = outer()
|
| 50 |
+
const closureB = outer()
|
| 51 |
+
|
| 52 |
+
closureA("Alice")
|
| 53 |
+
closureA("Bob")
|
subir/Curso de Fundamentos de JavaScript/03-Funciones y This/07-Fundamentos del Desarrollo Web Frontend y Backend.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:7cf16f8b74ffcd67cdfeb78c1c28a3356383dbdf2ce9febd3a968e641710d54c
|
| 3 |
+
size 62525306
|
subir/Curso de Fundamentos de JavaScript/03-Funciones y This/07-Fundamentos del Desarrollo Web Frontend y Backend.vtt
ADDED
|
@@ -0,0 +1,197 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:00.000 --> 00:02.000
|
| 4 |
+
Diego, ¿cuál es tu entorno de desarrollo
|
| 5 |
+
actual?
|
| 6 |
+
|
| 7 |
+
00:02.000 --> 00:05.000
|
| 8 |
+
Mi entorno de desarrollo actual es mi
|
| 9 |
+
computadora,
|
| 10 |
+
|
| 11 |
+
00:05.000 --> 00:08.000
|
| 12 |
+
un VSCode abierto, una pantalla del navegador,
|
| 13 |
+
|
| 14 |
+
00:08.000 --> 00:11.000
|
| 15 |
+
en este caso Chrome, y la consola del
|
| 16 |
+
navegador.
|
| 17 |
+
|
| 18 |
+
00:11.000 --> 00:14.000
|
| 19 |
+
Cuéntame por qué alguien debería aprender
|
| 20 |
+
desarrollo web.
|
| 21 |
+
|
| 22 |
+
00:14.000 --> 00:16.000
|
| 23 |
+
Yo creo que debería aprender desarrollo
|
| 24 |
+
web
|
| 25 |
+
|
| 26 |
+
00:16.000 --> 00:18.000
|
| 27 |
+
porque te da como
|
| 28 |
+
superpoderes,
|
| 29 |
+
|
| 30 |
+
00:18.000 --> 00:21.000
|
| 31 |
+
de que puedas construir soluciones de
|
| 32 |
+
forma muy económica,
|
| 33 |
+
|
| 34 |
+
00:21.000 --> 00:23.000
|
| 35 |
+
y que te da un poco más de experiencia.
|
| 36 |
+
|
| 37 |
+
00:23.000 --> 00:25.000
|
| 38 |
+
¿Y qué es lo que te da más
|
| 39 |
+
experiencia?
|
| 40 |
+
|
| 41 |
+
00:25.000 --> 00:28.000
|
| 42 |
+
Pues, yo creo que la experiencia es muy
|
| 43 |
+
importante.
|
| 44 |
+
|
| 45 |
+
00:28.000 --> 00:31.000
|
| 46 |
+
Es que puedes construir soluciones de
|
| 47 |
+
forma muy económica,
|
| 48 |
+
|
| 49 |
+
00:31.000 --> 00:34.000
|
| 50 |
+
que puedan escalar y llegar a muchos
|
| 51 |
+
usuarios
|
| 52 |
+
|
| 53 |
+
00:34.000 --> 00:36.000
|
| 54 |
+
de forma muy
|
| 55 |
+
rápida.
|
| 56 |
+
|
| 57 |
+
00:36.000 --> 00:39.000
|
| 58 |
+
Explícame la diferencia entre backend y
|
| 59 |
+
frontend.
|
| 60 |
+
|
| 61 |
+
00:39.000 --> 00:41.000
|
| 62 |
+
Backend y
|
| 63 |
+
front.
|
| 64 |
+
|
| 65 |
+
00:41.000 --> 00:43.000
|
| 66 |
+
Frontend es él o la
|
| 67 |
+
desarrolladora
|
| 68 |
+
|
| 69 |
+
00:43.000 --> 00:45.000
|
| 70 |
+
que trabaja cosas
|
| 71 |
+
visuales
|
| 72 |
+
|
| 73 |
+
00:45.000 --> 00:47.000
|
| 74 |
+
con las cuales van a interactuar los usuarios,
|
| 75 |
+
|
| 76 |
+
00:47.000 --> 00:49.000
|
| 77 |
+
y el backend es él o la
|
| 78 |
+
ingeniera
|
| 79 |
+
|
| 80 |
+
00:49.000 --> 00:51.000
|
| 81 |
+
que trabaja todo lo que no se
|
| 82 |
+
ve,
|
| 83 |
+
|
| 84 |
+
00:51.000 --> 00:53.000
|
| 85 |
+
por ejemplo, bases de datos, servidores,
|
| 86 |
+
|
| 87 |
+
00:53.000 --> 00:56.000
|
| 88 |
+
un poco más en tema de la infraestructura.
|
| 89 |
+
|
| 90 |
+
00:56.000 --> 00:58.000
|
| 91 |
+
¿Cómo abordas actualmente el
|
| 92 |
+
aprendizaje
|
| 93 |
+
|
| 94 |
+
00:58.000 --> 01:00.000
|
| 95 |
+
de un nuevo lenguaje de
|
| 96 |
+
programación
|
| 97 |
+
|
| 98 |
+
01:00.000 --> 01:02.000
|
| 99 |
+
o una nueva
|
| 100 |
+
tecnología?
|
| 101 |
+
|
| 102 |
+
01:02.000 --> 01:05.000
|
| 103 |
+
Actualmente lo estoy abordando con
|
| 104 |
+
inteligencia artificial.
|
| 105 |
+
|
| 106 |
+
01:05.000 --> 01:10.000
|
| 107 |
+
La estoy utilizando más como una tipo coach,
|
| 108 |
+
tutor,
|
| 109 |
+
|
| 110 |
+
01:10.000 --> 01:12.000
|
| 111 |
+
en el cual si quiero aprender
|
| 112 |
+
algo,
|
| 113 |
+
|
| 114 |
+
01:12.000 --> 01:15.000
|
| 115 |
+
le pido temas que tengo que
|
| 116 |
+
aprender
|
| 117 |
+
|
| 118 |
+
01:15.000 --> 01:17.000
|
| 119 |
+
para dominar esa
|
| 120 |
+
cosa.
|
| 121 |
+
|
| 122 |
+
01:17.000 --> 01:19.000
|
| 123 |
+
Le pido referencias de esos
|
| 124 |
+
temas,
|
| 125 |
+
|
| 126 |
+
01:19.000 --> 01:22.000
|
| 127 |
+
que pueden ser libros, pueden ser cursos,
|
| 128 |
+
|
| 129 |
+
01:22.000 --> 01:24.000
|
| 130 |
+
y cuando estoy haciendo
|
| 131 |
+
código,
|
| 132 |
+
|
| 133 |
+
01:24.000 --> 01:27.000
|
| 134 |
+
utilizo Copilot Chat más a nivel
|
| 135 |
+
contextual
|
| 136 |
+
|
| 137 |
+
01:27.000 --> 01:29.000
|
| 138 |
+
para que me explique lo que estoy haciendo
|
| 139 |
+
bien
|
| 140 |
+
|
| 141 |
+
01:29.000 --> 01:31.000
|
| 142 |
+
o lo que estoy haciendo
|
| 143 |
+
mal.
|
| 144 |
+
|
| 145 |
+
01:31.000 --> 01:33.000
|
| 146 |
+
¿Cuál es el error más común que ves en las
|
| 147 |
+
personas
|
| 148 |
+
|
| 149 |
+
01:33.000 --> 01:35.000
|
| 150 |
+
que recién están aprendiendo
|
| 151 |
+
JavaScript?
|
| 152 |
+
|
| 153 |
+
01:35.000 --> 01:37.000
|
| 154 |
+
El error más
|
| 155 |
+
común...
|
| 156 |
+
|
| 157 |
+
01:37.000 --> 01:39.000
|
| 158 |
+
Uy, esta es una buena
|
| 159 |
+
pregunta.
|
| 160 |
+
|
| 161 |
+
01:39.000 --> 01:42.000
|
| 162 |
+
Creo que sería el realmente no tomarte el
|
| 163 |
+
tiempo
|
| 164 |
+
|
| 165 |
+
01:42.000 --> 01:44.000
|
| 166 |
+
de aprender bien JavaScript las
|
| 167 |
+
bases
|
| 168 |
+
|
| 169 |
+
01:44.000 --> 01:46.000
|
| 170 |
+
y aventarte de
|
| 171 |
+
lleno
|
| 172 |
+
|
| 173 |
+
01:46.000 --> 01:48.000
|
| 174 |
+
a utilizar ya frameworks y
|
| 175 |
+
librerías
|
| 176 |
+
|
| 177 |
+
01:48.000 --> 01:51.000
|
| 178 |
+
sin entender bien el lenguaje que está por
|
| 179 |
+
debajo,
|
| 180 |
+
|
| 181 |
+
01:51.000 --> 01:53.000
|
| 182 |
+
que en este caso sería
|
| 183 |
+
JavaScript.
|
| 184 |
+
|
| 185 |
+
01:53.000 --> 01:55.000
|
| 186 |
+
Bueno, creo que ya estás terminando de grabar.
|
| 187 |
+
|
| 188 |
+
01:55.000 --> 01:56.000
|
| 189 |
+
Vamos para el
|
| 190 |
+
estudio.
|
| 191 |
+
|
| 192 |
+
01:56.000 --> 01:57.000
|
| 193 |
+
¡Vamos!
|
| 194 |
+
|
| 195 |
+
01:57.000 --> 02:23.000
|
| 196 |
+
♪
|
| 197 |
+
|
subir/Curso de Fundamentos de JavaScript/03-Funciones y This/07-Lecturas recomendadas.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://github.com/platzi/basico-js
|
subir/Curso de Fundamentos de JavaScript/03-Funciones y This/07-Resumen.html
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
subir/Curso de Fundamentos de JavaScript/04-Manipulación de Arrays/01-Arrays Propiedades Acceso y Creación en Programación.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:b4a5d15d9defe55b3538e0bda38be4f2b3b9dcd6d732a04479587407670fb5e6
|
| 3 |
+
size 56448241
|
subir/Curso de Fundamentos de JavaScript/04-Manipulación de Arrays/01-Arrays Propiedades Acceso y Creación en Programación.vtt
ADDED
|
@@ -0,0 +1,629 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:00.000 --> 00:03.640
|
| 4 |
+
En esta clase vamos a estar hablando sobre
|
| 5 |
+
qué es un array,
|
| 6 |
+
|
| 7 |
+
00:03.640 --> 00:07.040
|
| 8 |
+
también sus propiedades, como por ejemplo
|
| 9 |
+
length,
|
| 10 |
+
|
| 11 |
+
00:07.040 --> 00:10.240
|
| 12 |
+
y adicional vamos a estar hablando sobre
|
| 13 |
+
conceptos fundamentales
|
| 14 |
+
|
| 15 |
+
00:10.240 --> 00:13.240
|
| 16 |
+
como lo son la mutabilidad e inmutabilidad,
|
| 17 |
+
|
| 18 |
+
00:13.240 --> 00:15.840
|
| 19 |
+
y también cómo comprobar
|
| 20 |
+
efectivamente
|
| 21 |
+
|
| 22 |
+
00:15.840 --> 00:18.640
|
| 23 |
+
que lo que estamos haciendo o lo que
|
| 24 |
+
tenemos en nuestro código
|
| 25 |
+
|
| 26 |
+
00:18.640 --> 00:19.940
|
| 27 |
+
es un
|
| 28 |
+
array.
|
| 29 |
+
|
| 30 |
+
00:19.940 --> 00:23.040
|
| 31 |
+
Para ello, comencemos con la definición de
|
| 32 |
+
array.
|
| 33 |
+
|
| 34 |
+
00:23.040 --> 00:25.700
|
| 35 |
+
Normalmente nosotros escribimos
|
| 36 |
+
variables
|
| 37 |
+
|
| 38 |
+
00:25.700 --> 00:28.440
|
| 39 |
+
y a esas variables les asignamos un valor.
|
| 40 |
+
|
| 41 |
+
00:28.440 --> 00:32.040
|
| 42 |
+
Sin embargo, con los arrays tenemos algo
|
| 43 |
+
adicional
|
| 44 |
+
|
| 45 |
+
00:32.040 --> 00:36.240
|
| 46 |
+
y es que podemos guardar muchos valores en
|
| 47 |
+
una sola variable.
|
| 48 |
+
|
| 49 |
+
00:36.240 --> 00:39.640
|
| 50 |
+
Y también otra característica fundamental
|
| 51 |
+
de esos arrays
|
| 52 |
+
|
| 53 |
+
00:39.640 --> 00:41.540
|
| 54 |
+
es que son
|
| 55 |
+
objetos.
|
| 56 |
+
|
| 57 |
+
00:41.540 --> 00:43.540
|
| 58 |
+
Ahora sí, veamos en nuestro
|
| 59 |
+
código
|
| 60 |
+
|
| 61 |
+
00:43.540 --> 00:45.540
|
| 62 |
+
cómo crear justamente un
|
| 63 |
+
array
|
| 64 |
+
|
| 65 |
+
00:45.540 --> 00:49.740
|
| 66 |
+
y todas estas propiedades y
|
| 67 |
+
características importantes de ellos.
|
| 68 |
+
|
| 69 |
+
00:49.740 --> 00:52.340
|
| 70 |
+
Vamos a comenzar creando
|
| 71 |
+
arrays.
|
| 72 |
+
|
| 73 |
+
00:52.340 --> 00:54.840
|
| 74 |
+
Para ello, voy a escribir un
|
| 75 |
+
comentario
|
| 76 |
+
|
| 77 |
+
00:54.840 --> 00:58.440
|
| 78 |
+
que diga how to create an
|
| 79 |
+
array.
|
| 80 |
+
|
| 81 |
+
00:58.440 --> 01:02.840
|
| 82 |
+
En nuestro caso, tenemos dos formas de
|
| 83 |
+
crearlos.
|
| 84 |
+
|
| 85 |
+
01:02.840 --> 01:07.940
|
| 86 |
+
La primera forma es justamente colocando
|
| 87 |
+
la palabra clave new
|
| 88 |
+
|
| 89 |
+
01:07.940 --> 01:10.040
|
| 90 |
+
seguido de
|
| 91 |
+
array.
|
| 92 |
+
|
| 93 |
+
01:10.040 --> 01:14.240
|
| 94 |
+
O también podemos escribir solamente la
|
| 95 |
+
palabra array.
|
| 96 |
+
|
| 97 |
+
01:14.240 --> 01:17.840
|
| 98 |
+
Seguido, lo que vamos a hacer es empezar a
|
| 99 |
+
crear una variable,
|
| 100 |
+
|
| 101 |
+
01:17.840 --> 01:22.040
|
| 102 |
+
en este caso voy a crear como un conjunto
|
| 103 |
+
de frutas,
|
| 104 |
+
|
| 105 |
+
01:22.040 --> 01:24.840
|
| 106 |
+
y para ello lo que hago es
|
| 107 |
+
precisamente
|
| 108 |
+
|
| 109 |
+
01:24.840 --> 01:27.340
|
| 110 |
+
colocar la palabra clave
|
| 111 |
+
array
|
| 112 |
+
|
| 113 |
+
01:27.340 --> 01:29.140
|
| 114 |
+
y dentro de los
|
| 115 |
+
paréntesis
|
| 116 |
+
|
| 117 |
+
01:29.140 --> 01:31.840
|
| 118 |
+
empiezo a colocar los diferentes valores.
|
| 119 |
+
|
| 120 |
+
01:31.840 --> 01:35.140
|
| 121 |
+
Por ejemplo, voy a empezar a escribirlos
|
| 122 |
+
pero como strings.
|
| 123 |
+
|
| 124 |
+
01:35.140 --> 01:37.140
|
| 125 |
+
Entonces podemos colocar, por ejemplo,
|
| 126 |
+
|
| 127 |
+
01:37.140 --> 01:40.040
|
| 128 |
+
apple,
|
| 129 |
+
banana,
|
| 130 |
+
|
| 131 |
+
01:40.040 --> 01:42.840
|
| 132 |
+
también
|
| 133 |
+
orange,
|
| 134 |
+
|
| 135 |
+
01:42.840 --> 01:46.540
|
| 136 |
+
y si nosotros colocamos un
|
| 137 |
+
console.log
|
| 138 |
+
|
| 139 |
+
01:46.540 --> 01:48.840
|
| 140 |
+
de lo que es
|
| 141 |
+
fruits,
|
| 142 |
+
|
| 143 |
+
01:48.840 --> 01:50.640
|
| 144 |
+
vamos a colocarlo por
|
| 145 |
+
acá,
|
| 146 |
+
|
| 147 |
+
01:50.640 --> 01:52.840
|
| 148 |
+
vamos a darle
|
| 149 |
+
guardar,
|
| 150 |
+
|
| 151 |
+
01:52.840 --> 01:55.740
|
| 152 |
+
revisamos aquí nuestro
|
| 153 |
+
node
|
| 154 |
+
|
| 155 |
+
01:55.740 --> 01:58.340
|
| 156 |
+
y nuestro código ya
|
| 157 |
+
ejecutado,
|
| 158 |
+
|
| 159 |
+
01:58.340 --> 02:00.040
|
| 160 |
+
y nos sale un
|
| 161 |
+
array
|
| 162 |
+
|
| 163 |
+
02:00.040 --> 02:04.140
|
| 164 |
+
que se escribe justamente con estas
|
| 165 |
+
llavecitas cuadradas
|
| 166 |
+
|
| 167 |
+
02:04.140 --> 02:07.840
|
| 168 |
+
y nos sale por dentro un apple, banana y
|
| 169 |
+
orange.
|
| 170 |
+
|
| 171 |
+
02:07.840 --> 02:09.940
|
| 172 |
+
Entonces aquí ya estamos empezando a
|
| 173 |
+
ver
|
| 174 |
+
|
| 175 |
+
02:09.940 --> 02:12.440
|
| 176 |
+
que un array es un conjunto de
|
| 177 |
+
elementos
|
| 178 |
+
|
| 179 |
+
02:12.440 --> 02:15.440
|
| 180 |
+
que se guardan justamente en una variable.
|
| 181 |
+
|
| 182 |
+
02:15.440 --> 02:17.340
|
| 183 |
+
Con esta forma de
|
| 184 |
+
array
|
| 185 |
+
|
| 186 |
+
02:17.340 --> 02:20.640
|
| 187 |
+
no podríamos crear, por ejemplo, un solo
|
| 188 |
+
número.
|
| 189 |
+
|
| 190 |
+
02:20.640 --> 02:25.640
|
| 191 |
+
Si nosotros decimos, por ejemplo, const
|
| 192 |
+
just one number
|
| 193 |
+
|
| 194 |
+
02:25.640 --> 02:28.440
|
| 195 |
+
y le decimos igual a
|
| 196 |
+
array
|
| 197 |
+
|
| 198 |
+
02:28.440 --> 02:31.340
|
| 199 |
+
y dentro le colocamos un
|
| 200 |
+
número,
|
| 201 |
+
|
| 202 |
+
02:31.340 --> 02:35.240
|
| 203 |
+
no vamos a tener como ese resultado que
|
| 204 |
+
nosotros queremos.
|
| 205 |
+
|
| 206 |
+
02:35.240 --> 02:37.840
|
| 207 |
+
Voy a colocar en este console.log así,
|
| 208 |
+
|
| 209 |
+
02:37.840 --> 02:39.040
|
| 210 |
+
corro el
|
| 211 |
+
código
|
| 212 |
+
|
| 213 |
+
02:39.040 --> 02:42.640
|
| 214 |
+
y aquí ya vemos que nos sale el primer
|
| 215 |
+
array que creamos
|
| 216 |
+
|
| 217 |
+
02:42.640 --> 02:46.040
|
| 218 |
+
y seguido de eso vamos a tener un
|
| 219 |
+
array
|
| 220 |
+
|
| 221 |
+
02:46.040 --> 02:49.640
|
| 222 |
+
con 12 como posiciones, pero vacías.
|
| 223 |
+
|
| 224 |
+
02:49.640 --> 02:53.540
|
| 225 |
+
Entonces en este caso no nos funciona solo
|
| 226 |
+
para eso,
|
| 227 |
+
|
| 228 |
+
02:53.540 --> 02:56.940
|
| 229 |
+
para eso vamos a ver la siguiente forma de
|
| 230 |
+
crear arrays,
|
| 231 |
+
|
| 232 |
+
02:56.940 --> 02:58.540
|
| 233 |
+
pero en un
|
| 234 |
+
ratito.
|
| 235 |
+
|
| 236 |
+
02:58.540 --> 03:02.840
|
| 237 |
+
Otra cosa que sí podemos hacer es crear
|
| 238 |
+
esto mismo,
|
| 239 |
+
|
| 240 |
+
03:02.840 --> 03:06.640
|
| 241 |
+
pero para diferentes números, no solamente
|
| 242 |
+
uno.
|
| 243 |
+
|
| 244 |
+
03:06.640 --> 03:09.340
|
| 245 |
+
Por ejemplo, si yo coloco solamente
|
| 246 |
+
numbers
|
| 247 |
+
|
| 248 |
+
03:09.340 --> 03:13.340
|
| 249 |
+
y dentro de esto le escribo 2, 3, 4,
|
| 250 |
+
5
|
| 251 |
+
|
| 252 |
+
03:13.340 --> 03:16.840
|
| 253 |
+
y coloco un console.log para revisar esta
|
| 254 |
+
parte,
|
| 255 |
+
|
| 256 |
+
03:16.840 --> 03:19.540
|
| 257 |
+
por supuesto que sí nos sale un
|
| 258 |
+
array
|
| 259 |
+
|
| 260 |
+
03:19.540 --> 03:23.540
|
| 261 |
+
con todos los números que acabamos de
|
| 262 |
+
colocarle en este lado.
|
| 263 |
+
|
| 264 |
+
03:26.540 --> 03:29.140
|
| 265 |
+
También otra cosa que podemos
|
| 266 |
+
hacer
|
| 267 |
+
|
| 268 |
+
03:29.140 --> 03:33.640
|
| 269 |
+
es crear arrays, por supuesto, con otra
|
| 270 |
+
sintaxis.
|
| 271 |
+
|
| 272 |
+
03:33.640 --> 03:36.740
|
| 273 |
+
Esa sintaxis, vamos a escribir por acá 2,
|
| 274 |
+
|
| 275 |
+
03:36.740 --> 03:38.940
|
| 276 |
+
array literal
|
| 277 |
+
syntax,
|
| 278 |
+
|
| 279 |
+
03:38.940 --> 03:42.840
|
| 280 |
+
es como la sintaxis literal de un array.
|
| 281 |
+
|
| 282 |
+
03:42.840 --> 03:47.040
|
| 283 |
+
Entonces, como lo escribimos, voy a subir
|
| 284 |
+
un poco este código
|
| 285 |
+
|
| 286 |
+
03:47.040 --> 03:52.440
|
| 287 |
+
y aquí lo que hacemos es decir, por ejemplo,
|
| 288 |
+
const oneNumber
|
| 289 |
+
|
| 290 |
+
03:52.440 --> 03:56.640
|
| 291 |
+
y acá le decimos, abrimos estas llaves de
|
| 292 |
+
esta forma,
|
| 293 |
+
|
| 294 |
+
03:56.640 --> 04:01.140
|
| 295 |
+
estos corchetes, y aquí le decimos un número,
|
| 296 |
+
4.
|
| 297 |
+
|
| 298 |
+
04:01.140 --> 04:03.940
|
| 299 |
+
Seguido de esto colocamos el console.
|
| 300 |
+
log
|
| 301 |
+
|
| 302 |
+
04:03.940 --> 04:05.840
|
| 303 |
+
de lo que es
|
| 304 |
+
oneNumber,
|
| 305 |
+
|
| 306 |
+
04:05.840 --> 04:08.040
|
| 307 |
+
vamos a correr nuevamente el
|
| 308 |
+
código
|
| 309 |
+
|
| 310 |
+
04:08.040 --> 04:10.240
|
| 311 |
+
y aquí ya vemos que tenemos un
|
| 312 |
+
array
|
| 313 |
+
|
| 314 |
+
04:10.240 --> 04:14.040
|
| 315 |
+
precisamente con una sola posición, con un
|
| 316 |
+
solo valor,
|
| 317 |
+
|
| 318 |
+
04:14.040 --> 04:18.040
|
| 319 |
+
que es el que le acabamos de asignar aquí
|
| 320 |
+
a oneNumber.
|
| 321 |
+
|
| 322 |
+
04:20.840 --> 04:24.540
|
| 323 |
+
Por otro lado, si quisiéramos un array vacío,
|
| 324 |
+
|
| 325 |
+
04:24.540 --> 04:29.440
|
| 326 |
+
colocamos, por ejemplo, empty, empty
|
| 327 |
+
array
|
| 328 |
+
|
| 329 |
+
04:29.440 --> 04:34.440
|
| 330 |
+
y decimos solamente así, abrimos corchetes
|
| 331 |
+
solos,
|
| 332 |
+
|
| 333 |
+
04:34.440 --> 04:38.440
|
| 334 |
+
colocamos el console.log, colocamos
|
| 335 |
+
nuestra variable,
|
| 336 |
+
|
| 337 |
+
04:38.440 --> 04:40.440
|
| 338 |
+
luego corremos nuestro
|
| 339 |
+
código
|
| 340 |
+
|
| 341 |
+
04:40.440 --> 04:43.740
|
| 342 |
+
y aquí ya vemos que el array está
|
| 343 |
+
completamente vacío.
|
| 344 |
+
|
| 345 |
+
04:43.740 --> 04:48.140
|
| 346 |
+
Esto funciona cuando nosotros queremos
|
| 347 |
+
inicializar
|
| 348 |
+
|
| 349 |
+
04:48.140 --> 04:50.740
|
| 350 |
+
algún programa o queremos que
|
| 351 |
+
inicialmente
|
| 352 |
+
|
| 353 |
+
04:50.740 --> 04:53.640
|
| 354 |
+
una variable tenga un array vacío y luego
|
| 355 |
+
irlo llenando,
|
| 356 |
+
|
| 357 |
+
04:53.640 --> 04:56.040
|
| 358 |
+
entonces, en estos casos también es
|
| 359 |
+
importante
|
| 360 |
+
|
| 361 |
+
04:56.040 --> 04:59.540
|
| 362 |
+
crear esos arrays
|
| 363 |
+
vacíos.
|
| 364 |
+
|
| 365 |
+
04:59.540 --> 05:02.540
|
| 366 |
+
Por otro lado, podríamos crear también,
|
| 367 |
+
por ejemplo,
|
| 368 |
+
|
| 369 |
+
05:02.540 --> 05:05.240
|
| 370 |
+
un array de muchos datos
|
| 371 |
+
string,
|
| 372 |
+
|
| 373 |
+
05:05.240 --> 05:07.440
|
| 374 |
+
como hicimos al principio con las frutas,
|
| 375 |
+
|
| 376 |
+
05:07.440 --> 05:11.240
|
| 377 |
+
sería, por ejemplo, sports,
|
| 378 |
+
igual,
|
| 379 |
+
|
| 380 |
+
05:11.240 --> 05:14.440
|
| 381 |
+
y dentro de estos corchetes colocamos,
|
| 382 |
+
por ejemplo,
|
| 383 |
+
|
| 384 |
+
05:14.440 --> 05:19.240
|
| 385 |
+
soccer, seguidos decimos, por ejemplo, tenis,
|
| 386 |
+
|
| 387 |
+
05:19.240 --> 05:22.240
|
| 388 |
+
seguido vamos a decir, por ejemplo, rugby.
|
| 389 |
+
|
| 390 |
+
05:22.240 --> 05:26.240
|
| 391 |
+
Y también de nuevo podemos colocar nuestro
|
| 392 |
+
console.log,
|
| 393 |
+
|
| 394 |
+
05:26.240 --> 05:29.740
|
| 395 |
+
dentro colocamos los
|
| 396 |
+
deportes
|
| 397 |
+
|
| 398 |
+
05:29.740 --> 05:34.440
|
| 399 |
+
y tenemos nuestro array precisamente con
|
| 400 |
+
strings.
|
| 401 |
+
|
| 402 |
+
05:34.440 --> 05:39.440
|
| 403 |
+
Algo también importante es que podemos
|
| 404 |
+
crear arrays mixtos.
|
| 405 |
+
|
| 406 |
+
05:39.440 --> 05:41.440
|
| 407 |
+
¿Cómo podemos
|
| 408 |
+
hacerlo?
|
| 409 |
+
|
| 410 |
+
05:41.440 --> 05:44.440
|
| 411 |
+
Vamos a decir, por ejemplo,
|
| 412 |
+
const,
|
| 413 |
+
|
| 414 |
+
05:44.440 --> 05:49.440
|
| 415 |
+
receipt,
|
| 416 |
+
ingredients,
|
| 417 |
+
|
| 418 |
+
05:49.440 --> 05:53.440
|
| 419 |
+
y acá le decimos, abrimos nuestros
|
| 420 |
+
corchetes
|
| 421 |
+
|
| 422 |
+
05:53.440 --> 05:56.440
|
| 423 |
+
y dentro podemos colocar, por ejemplo,
|
| 424 |
+
strings,
|
| 425 |
+
|
| 426 |
+
05:56.440 --> 06:01.440
|
| 427 |
+
en este caso voy a colocar este string,
|
| 428 |
+
|
| 429 |
+
06:01.440 --> 06:04.440
|
| 430 |
+
luego podemos colocar, por ejemplo, un
|
| 431 |
+
valor booleano,
|
| 432 |
+
|
| 433 |
+
06:04.440 --> 06:08.440
|
| 434 |
+
como este, seguido podemos colocar un
|
| 435 |
+
número
|
| 436 |
+
|
| 437 |
+
06:08.440 --> 06:12.440
|
| 438 |
+
y después, por ejemplo, podemos colocar un
|
| 439 |
+
objeto,
|
| 440 |
+
|
| 441 |
+
06:12.440 --> 06:17.440
|
| 442 |
+
este objeto puede ser, por ejemplo,
|
| 443 |
+
ingredient,
|
| 444 |
+
|
| 445 |
+
06:17.440 --> 06:20.440
|
| 446 |
+
podemos colocar este, como en string,
|
| 447 |
+
|
| 448 |
+
06:20.440 --> 06:26.440
|
| 449 |
+
meal, la cantidad,
|
| 450 |
+
quantity,
|
| 451 |
+
|
| 452 |
+
06:26.440 --> 06:30.440
|
| 453 |
+
a esto le podemos colocar, por ejemplo,
|
| 454 |
+
one cup,
|
| 455 |
+
|
| 456 |
+
06:30.440 --> 06:36.440
|
| 457 |
+
y podemos de nuevo colocar, por ejemplo,
|
| 458 |
+
un valor booleano.
|
| 459 |
+
|
| 460 |
+
06:36.440 --> 06:41.440
|
| 461 |
+
Entonces, si nosotros colocamos, por ejemplo,
|
| 462 |
+
un console.log,
|
| 463 |
+
|
| 464 |
+
06:41.440 --> 06:45.440
|
| 465 |
+
¿de quién? De esta
|
| 466 |
+
variable,
|
| 467 |
+
|
| 468 |
+
06:45.440 --> 06:49.440
|
| 469 |
+
ya nosotros vamos a ver que tenemos
|
| 470 |
+
justamente un array mixto,
|
| 471 |
+
|
| 472 |
+
06:49.440 --> 06:53.440
|
| 473 |
+
en donde tenemos strings, booleanos, números,
|
| 474 |
+
objetos,
|
| 475 |
+
|
| 476 |
+
06:53.440 --> 06:57.440
|
| 477 |
+
podemos tener un montón de valores también
|
| 478 |
+
asignados
|
| 479 |
+
|
| 480 |
+
06:57.440 --> 06:59.440
|
| 481 |
+
a una sola
|
| 482 |
+
variable.
|
| 483 |
+
|
| 484 |
+
06:59.440 --> 07:01.440
|
| 485 |
+
Ahora vamos a ver lo
|
| 486 |
+
siguiente,
|
| 487 |
+
|
| 488 |
+
07:01.440 --> 07:04.440
|
| 489 |
+
¿cómo podemos nosotros acceder a un
|
| 490 |
+
array?
|
| 491 |
+
|
| 492 |
+
07:04.440 --> 07:07.440
|
| 493 |
+
Ejemplo, si yo tengo esta variable de sports,
|
| 494 |
+
|
| 495 |
+
07:07.440 --> 07:10.440
|
| 496 |
+
¿cómo puedo acceder justamente a tenis,
|
| 497 |
+
por ejemplo?
|
| 498 |
+
|
| 499 |
+
07:10.440 --> 07:13.440
|
| 500 |
+
Entonces, lo que vamos a ver por acá,
|
| 501 |
+
|
| 502 |
+
07:13.440 --> 07:15.440
|
| 503 |
+
voy a escribir un comentario que
|
| 504 |
+
diga
|
| 505 |
+
|
| 506 |
+
07:15.440 --> 07:19.440
|
| 507 |
+
accessing justamente arrays, array elements,
|
| 508 |
+
|
| 509 |
+
07:19.440 --> 07:22.440
|
| 510 |
+
y lo que hacemos es decir, vamos a crear
|
| 511 |
+
una variable,
|
| 512 |
+
|
| 513 |
+
07:22.440 --> 07:27.440
|
| 514 |
+
first, fruit, vamos a colocarle así,
|
| 515 |
+
|
| 516 |
+
07:27.440 --> 07:31.440
|
| 517 |
+
vamos a crear también
|
| 518 |
+
fruit,
|
| 519 |
+
|
| 520 |
+
07:31.440 --> 07:35.440
|
| 521 |
+
y le decimos en la posición cero o en la
|
| 522 |
+
posición uno,
|
| 523 |
+
|
| 524 |
+
07:35.440 --> 07:39.440
|
| 525 |
+
vamos a decir que si tenemos un array,
|
| 526 |
+
en este caso,
|
| 527 |
+
|
| 528 |
+
07:39.440 --> 07:43.440
|
| 529 |
+
que es frutas, y queremos acceder a apple,
|
| 530 |
+
|
| 531 |
+
07:43.440 --> 07:46.440
|
| 532 |
+
en este caso, lo importante a tener en
|
| 533 |
+
cuenta
|
| 534 |
+
|
| 535 |
+
07:46.440 --> 07:50.440
|
| 536 |
+
es que un array está designado también por
|
| 537 |
+
índices.
|
| 538 |
+
|
| 539 |
+
07:50.440 --> 07:53.440
|
| 540 |
+
Entonces, este sería el índice cero,
|
| 541 |
+
|
| 542 |
+
07:53.440 --> 07:56.440
|
| 543 |
+
luego el uno, el dos, y así sucesivamente.
|
| 544 |
+
|
| 545 |
+
07:56.440 --> 07:59.440
|
| 546 |
+
Entonces, si nosotros quisiéramos acceder
|
| 547 |
+
a apple,
|
| 548 |
+
|
| 549 |
+
07:59.440 --> 08:02.440
|
| 550 |
+
tendríamos que decir, mira, yo quiero
|
| 551 |
+
acceder justamente
|
| 552 |
+
|
| 553 |
+
08:02.440 --> 08:05.440
|
| 554 |
+
a lo que nosotros tenemos en la
|
| 555 |
+
posición
|
| 556 |
+
|
| 557 |
+
08:05.440 --> 08:07.440
|
| 558 |
+
o en el índice número
|
| 559 |
+
cero.
|
| 560 |
+
|
| 561 |
+
08:07.440 --> 08:11.440
|
| 562 |
+
Entonces, si decimos, por ejemplo, console.
|
| 563 |
+
log,
|
| 564 |
+
|
| 565 |
+
08:11.440 --> 08:16.440
|
| 566 |
+
él nos va a devolver justamente el primer
|
| 567 |
+
valor de ese array,
|
| 568 |
+
|
| 569 |
+
08:16.440 --> 08:20.440
|
| 570 |
+
que en este caso sería quién, apple.
|
| 571 |
+
|
| 572 |
+
08:20.440 --> 08:23.440
|
| 573 |
+
Ahora, si nosotros quisiéramos saber,
|
| 574 |
+
por ejemplo,
|
| 575 |
+
|
| 576 |
+
08:23.440 --> 08:27.440
|
| 577 |
+
el tamaño de un array como
|
| 578 |
+
tal,
|
| 579 |
+
|
| 580 |
+
08:27.440 --> 08:30.440
|
| 581 |
+
entonces podríamos hacerlo con una
|
| 582 |
+
propiedad
|
| 583 |
+
|
| 584 |
+
08:30.440 --> 08:32.440
|
| 585 |
+
que se llama length,
|
| 586 |
+
justamente.
|
| 587 |
+
|
| 588 |
+
08:32.440 --> 08:34.440
|
| 589 |
+
Entonces, lo que hacemos es como, por ejemplo,
|
| 590 |
+
|
| 591 |
+
08:34.440 --> 08:39.440
|
| 592 |
+
crear una variable, vamos a decirle number
|
| 593 |
+
of fruits,
|
| 594 |
+
|
| 595 |
+
08:39.440 --> 08:44.440
|
| 596 |
+
y aquí le decimos
|
| 597 |
+
fruits.length,
|
| 598 |
+
|
| 599 |
+
08:44.440 --> 08:48.440
|
| 600 |
+
y seguido le colocamos un console.log para
|
| 601 |
+
revisar
|
| 602 |
+
|
| 603 |
+
08:48.440 --> 08:51.440
|
| 604 |
+
qué es lo que nos va a dar esta propiedad.
|
| 605 |
+
|
| 606 |
+
08:51.440 --> 08:53.440
|
| 607 |
+
Entonces, vamos a correr el código y
|
| 608 |
+
vemos
|
| 609 |
+
|
| 610 |
+
08:53.440 --> 08:56.440
|
| 611 |
+
que lo que nos provee es un
|
| 612 |
+
número,
|
| 613 |
+
|
| 614 |
+
08:56.440 --> 08:59.440
|
| 615 |
+
y ese número equivale a la cantidad de
|
| 616 |
+
elementos
|
| 617 |
+
|
| 618 |
+
08:59.440 --> 09:01.440
|
| 619 |
+
que hay en ese
|
| 620 |
+
array.
|
| 621 |
+
|
| 622 |
+
09:01.440 --> 09:05.440
|
| 623 |
+
En este caso sería, por ejemplo, uno,
|
| 624 |
+
dos y tres,
|
| 625 |
+
|
| 626 |
+
09:05.440 --> 09:22.440
|
| 627 |
+
y ese sería el valor que él nos empieza a
|
| 628 |
+
proveer.
|
| 629 |
+
|
subir/Curso de Fundamentos de JavaScript/04-Manipulación de Arrays/01-Lecturas recomendadas.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://github.com/platzi/basico-js
|
subir/Curso de Fundamentos de JavaScript/04-Manipulación de Arrays/01-Resumen.html
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
subir/Curso de Fundamentos de JavaScript/04-Manipulación de Arrays/01-clase-introduccion-arrays_e21fb09f-1ffe-42e2-8535-ee8181c2f83c.js
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
// How to create an Array ?
|
| 2 |
+
|
| 3 |
+
// 1. new Array() or Array()
|
| 4 |
+
|
| 5 |
+
const fruits = Array('apple', 'banana', 'orange')
|
| 6 |
+
console.log(fruits)
|
| 7 |
+
|
| 8 |
+
const justOneNumber = Array(12)
|
| 9 |
+
console.log(justOneNumber)
|
| 10 |
+
|
| 11 |
+
const number = Array(1, 2, 3, 4, 5)
|
| 12 |
+
console.log(number)
|
| 13 |
+
|
| 14 |
+
// 2. Array literal syntax
|
| 15 |
+
|
| 16 |
+
const oneNumber = [4]
|
| 17 |
+
console.log(oneNumber)
|
| 18 |
+
|
| 19 |
+
const emptyArray = []
|
| 20 |
+
console.log(emptyArray)
|
| 21 |
+
|
| 22 |
+
const sports = ['soccer', 'tennis', 'rugby']
|
| 23 |
+
console.log(sports)
|
| 24 |
+
|
| 25 |
+
const recipeIngredients = [
|
| 26 |
+
'Flour',
|
| 27 |
+
true,
|
| 28 |
+
2,
|
| 29 |
+
{
|
| 30 |
+
ingredient: 'Milk', quantity: '1 cup'
|
| 31 |
+
},
|
| 32 |
+
false
|
| 33 |
+
]
|
| 34 |
+
console.log(recipeIngredients)
|
| 35 |
+
|
| 36 |
+
// Accessing array elements
|
| 37 |
+
|
| 38 |
+
const firstFruit = fruits[0]
|
| 39 |
+
console.log(firstFruit)
|
| 40 |
+
|
| 41 |
+
// length property
|
| 42 |
+
|
| 43 |
+
const numberOfFruits = fruits.length
|
| 44 |
+
console.log(numberOfFruits)
|
| 45 |
+
|
| 46 |
+
// Mutability
|
| 47 |
+
|
| 48 |
+
fruits.push('watermelon')
|
| 49 |
+
console.log(fruits)
|
| 50 |
+
|
| 51 |
+
// Immutability
|
| 52 |
+
|
| 53 |
+
const newFruits = fruits.concat(['grape', 'kiwi'])
|
| 54 |
+
console.log(fruits)
|
| 55 |
+
console.log(newFruits)
|
| 56 |
+
|
| 57 |
+
// Checking arrays with Array.isArray()
|
| 58 |
+
|
| 59 |
+
const isArray = Array.isArray(fruits)
|
| 60 |
+
console.log(isArray)
|
| 61 |
+
|
| 62 |
+
// Practical exercise: sum all elements of an array.
|
| 63 |
+
|
| 64 |
+
const numbersArray = [1, 2, 3, 4, 5]
|
| 65 |
+
let sum = 0
|
| 66 |
+
|
| 67 |
+
for (let i = 0; i < numbersArray.length; i++) {
|
| 68 |
+
sum += numbersArray[i]
|
| 69 |
+
}
|
| 70 |
+
|
| 71 |
+
console.log(sum)
|
subir/Curso de Fundamentos de JavaScript/04-Manipulación de Arrays/02-Mutabilidad e inmutabilidad en arrays conceptos y ejemplos prácticos.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:f0d3d123dd1e9bd77347520c3c7beb8a0bb297652321b4d6abec4db7567861b0
|
| 3 |
+
size 41984670
|
subir/Curso de Fundamentos de JavaScript/04-Manipulación de Arrays/02-Mutabilidad e inmutabilidad en arrays conceptos y ejemplos prácticos.vtt
ADDED
|
@@ -0,0 +1,594 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
WEBVTT
|
| 2 |
+
|
| 3 |
+
00:00.000 --> 00:04.600
|
| 4 |
+
Por otro lado, algo importantísimo que
|
| 5 |
+
tenemos en los arrays
|
| 6 |
+
|
| 7 |
+
00:04.600 --> 00:09.600
|
| 8 |
+
son justamente el tema de la mutabilidad e
|
| 9 |
+
inmutabilidad.
|
| 10 |
+
|
| 11 |
+
00:09.600 --> 00:11.200
|
| 12 |
+
¿Qué quiere decir
|
| 13 |
+
eso?
|
| 14 |
+
|
| 15 |
+
00:11.200 --> 00:13.100
|
| 16 |
+
Si nosotros tenemos un
|
| 17 |
+
array,
|
| 18 |
+
|
| 19 |
+
00:13.100 --> 00:15.600
|
| 20 |
+
y un array ya sabemos que es un objeto,
|
| 21 |
+
|
| 22 |
+
00:15.600 --> 00:18.700
|
| 23 |
+
ese objeto puede tener diferentes métodos.
|
| 24 |
+
|
| 25 |
+
00:18.700 --> 00:21.400
|
| 26 |
+
Estos métodos nos van a ayudar a
|
| 27 |
+
hacer
|
| 28 |
+
|
| 29 |
+
00:21.400 --> 00:25.000
|
| 30 |
+
una gran cantidad de cosas dependiendo de
|
| 31 |
+
cada uno de los métodos,
|
| 32 |
+
|
| 33 |
+
00:25.000 --> 00:27.500
|
| 34 |
+
pero también dependiendo de cada método,
|
| 35 |
+
|
| 36 |
+
00:27.500 --> 00:30.400
|
| 37 |
+
o podemos mutar el valor
|
| 38 |
+
original,
|
| 39 |
+
|
| 40 |
+
00:30.400 --> 00:34.500
|
| 41 |
+
es decir, transformar el array que ya
|
| 42 |
+
hemos construido,
|
| 43 |
+
|
| 44 |
+
00:34.500 --> 00:37.500
|
| 45 |
+
o por el contrario, crear un array nuevo.
|
| 46 |
+
|
| 47 |
+
00:37.500 --> 00:39.500
|
| 48 |
+
Es decir,
|
| 49 |
+
inmutable,
|
| 50 |
+
|
| 51 |
+
00:39.500 --> 00:43.000
|
| 52 |
+
es decir, no vamos a mutar ese array que
|
| 53 |
+
ya acabamos de crear.
|
| 54 |
+
|
| 55 |
+
00:43.000 --> 00:46.500
|
| 56 |
+
Veamos un ejemplo para que esto quede
|
| 57 |
+
muchísimo más claro.
|
| 58 |
+
|
| 59 |
+
00:46.500 --> 00:49.000
|
| 60 |
+
Entonces vamos a escribir mutability.
|
| 61 |
+
|
| 62 |
+
00:49.000 --> 00:52.500
|
| 63 |
+
Vamos a ver uno de los métodos rápidamente,
|
| 64 |
+
|
| 65 |
+
00:52.500 --> 00:56.300
|
| 66 |
+
que es justamente cómo podemos agregar un
|
| 67 |
+
elemento a ese array.
|
| 68 |
+
|
| 69 |
+
00:56.300 --> 00:59.000
|
| 70 |
+
Entonces, por ejemplo, tenemos frutas,
|
| 71 |
+
|
| 72 |
+
00:59.000 --> 01:03.500
|
| 73 |
+
y a estas frutas lo que le vamos a hacer
|
| 74 |
+
es agregarle otro valor.
|
| 75 |
+
|
| 76 |
+
01:03.500 --> 01:06.500
|
| 77 |
+
Voy a colocarle
|
| 78 |
+
watermelon,
|
| 79 |
+
|
| 80 |
+
01:06.500 --> 01:10.500
|
| 81 |
+
y si nosotros colocamos un console.log,
|
| 82 |
+
|
| 83 |
+
01:10.500 --> 01:13.000
|
| 84 |
+
¿de quién? De
|
| 85 |
+
frutas.
|
| 86 |
+
|
| 87 |
+
01:13.000 --> 01:15.000
|
| 88 |
+
¿Qué vamos a ver? Voy a
|
| 89 |
+
darle...
|
| 90 |
+
|
| 91 |
+
01:15.000 --> 01:16.500
|
| 92 |
+
Ah, voy a correr el
|
| 93 |
+
programa,
|
| 94 |
+
|
| 95 |
+
01:16.500 --> 01:18.500
|
| 96 |
+
y aquí empezamos a ver lo siguiente.
|
| 97 |
+
|
| 98 |
+
01:18.500 --> 01:21.800
|
| 99 |
+
Ah, bueno, aquí toca corregir
|
| 100 |
+
esto,
|
| 101 |
+
|
| 102 |
+
01:21.800 --> 01:24.800
|
| 103 |
+
voy a colocar fruits, de nuevo correr
|
| 104 |
+
programa,
|
| 105 |
+
|
| 106 |
+
01:24.800 --> 01:27.300
|
| 107 |
+
y aquí vemos que ya tiene mi
|
| 108 |
+
array,
|
| 109 |
+
|
| 110 |
+
01:27.300 --> 01:29.300
|
| 111 |
+
el que habíamos creado al principio,
|
| 112 |
+
|
| 113 |
+
01:29.300 --> 01:32.300
|
| 114 |
+
que dice apple, banana,
|
| 115 |
+
orange,
|
| 116 |
+
|
| 117 |
+
01:32.300 --> 01:37.300
|
| 118 |
+
pero adicional, el array frutas se modificó,
|
| 119 |
+
|
| 120 |
+
01:37.300 --> 01:39.300
|
| 121 |
+
le agregó un nuevo
|
| 122 |
+
valor.
|
| 123 |
+
|
| 124 |
+
01:39.300 --> 01:44.300
|
| 125 |
+
Entonces, por eso hablamos de que muchos
|
| 126 |
+
de los métodos de arrays
|
| 127 |
+
|
| 128 |
+
01:44.300 --> 01:49.300
|
| 129 |
+
pueden mutar, pueden transformar el array
|
| 130 |
+
original.
|
| 131 |
+
|
| 132 |
+
01:49.300 --> 01:52.800
|
| 133 |
+
Por otro lado, también tenemos lo contrario,
|
| 134 |
+
|
| 135 |
+
01:52.800 --> 01:55.300
|
| 136 |
+
que es la
|
| 137 |
+
inmutabilidad.
|
| 138 |
+
|
| 139 |
+
01:55.300 --> 01:57.300
|
| 140 |
+
Entonces, ¿cómo sería en este
|
| 141 |
+
caso?
|
| 142 |
+
|
| 143 |
+
01:57.300 --> 02:00.300
|
| 144 |
+
Si nosotros tenemos, por ejemplo, const new,
|
| 145 |
+
|
| 146 |
+
02:00.300 --> 02:03.800
|
| 147 |
+
en este caso voy a crear como un nuevo
|
| 148 |
+
array de frutas,
|
| 149 |
+
|
| 150 |
+
02:03.800 --> 02:08.300
|
| 151 |
+
lo que hacemos es decir frutas.concat,
|
| 152 |
+
|
| 153 |
+
02:08.300 --> 02:10.300
|
| 154 |
+
por ejemplo, que lo que vamos a
|
| 155 |
+
hacer
|
| 156 |
+
|
| 157 |
+
02:10.300 --> 02:13.800
|
| 158 |
+
es como juntar un array con otro array,
|
| 159 |
+
|
| 160 |
+
02:13.800 --> 02:15.800
|
| 161 |
+
entonces tenemos el array de frutas,
|
| 162 |
+
|
| 163 |
+
02:15.800 --> 02:20.800
|
| 164 |
+
y encima vamos a crear otro array donde
|
| 165 |
+
hay otro tipo de frutas.
|
| 166 |
+
|
| 167 |
+
02:20.800 --> 02:23.800
|
| 168 |
+
Entonces, por ejemplo, vamos a colocarle
|
| 169 |
+
grape
|
| 170 |
+
|
| 171 |
+
02:23.800 --> 02:26.800
|
| 172 |
+
y vamos a colocarle
|
| 173 |
+
kiwi.
|
| 174 |
+
|
| 175 |
+
02:26.800 --> 02:30.800
|
| 176 |
+
En este caso, lo que vamos a hacer es un
|
| 177 |
+
console.log
|
| 178 |
+
|
| 179 |
+
02:30.800 --> 02:33.800
|
| 180 |
+
tanto de fruits como de
|
| 181 |
+
quién,
|
| 182 |
+
|
| 183 |
+
02:33.800 --> 02:35.800
|
| 184 |
+
de las nuevas frutas que
|
| 185 |
+
creamos.
|
| 186 |
+
|
| 187 |
+
02:35.800 --> 02:39.800
|
| 188 |
+
Entonces, vamos a correr nuevamente el
|
| 189 |
+
programa,
|
| 190 |
+
|
| 191 |
+
02:39.800 --> 02:41.800
|
| 192 |
+
y aquí vemos lo
|
| 193 |
+
siguiente.
|
| 194 |
+
|
| 195 |
+
02:41.800 --> 02:43.800
|
| 196 |
+
Vamos a revisar las dos últimas líneas.
|
| 197 |
+
|
| 198 |
+
02:43.800 --> 02:47.300
|
| 199 |
+
Tenemos apple, banana, orange, watermelon,
|
| 200 |
+
|
| 201 |
+
02:47.300 --> 02:49.800
|
| 202 |
+
que fue la modificación que hicimos acá,
|
| 203 |
+
|
| 204 |
+
02:49.800 --> 02:53.800
|
| 205 |
+
seguido tenemos apple, banana, orange,
|
| 206 |
+
watermelon,
|
| 207 |
+
|
| 208 |
+
02:53.800 --> 02:55.800
|
| 209 |
+
y encima grape y
|
| 210 |
+
kiwi.
|
| 211 |
+
|
| 212 |
+
02:55.800 --> 02:57.800
|
| 213 |
+
Aquí podemos ver lo
|
| 214 |
+
siguiente.
|
| 215 |
+
|
| 216 |
+
02:57.800 --> 03:00.800
|
| 217 |
+
Uno, tenemos nuestro array sin modificar,
|
| 218 |
+
|
| 219 |
+
03:00.800 --> 03:03.800
|
| 220 |
+
pues aparte de la modificación que le
|
| 221 |
+
hicimos aquí,
|
| 222 |
+
|
| 223 |
+
03:03.800 --> 03:07.800
|
| 224 |
+
y adicional tenemos el nuevo array, ¿con
|
| 225 |
+
quién?
|
| 226 |
+
|
| 227 |
+
03:07.800 --> 03:10.800
|
| 228 |
+
Con lo que era frutas al
|
| 229 |
+
principio,
|
| 230 |
+
|
| 231 |
+
03:10.800 --> 03:14.800
|
| 232 |
+
más el nuevo array que le concatenamos o
|
| 233 |
+
que le sumamos.
|
| 234 |
+
|
| 235 |
+
03:14.800 --> 03:16.800
|
| 236 |
+
Entonces, aquí ya estamos viendo
|
| 237 |
+
también
|
| 238 |
+
|
| 239 |
+
03:16.800 --> 03:19.800
|
| 240 |
+
este concepto importante de inmutabilidad,
|
| 241 |
+
|
| 242 |
+
03:19.800 --> 03:24.800
|
| 243 |
+
ya que no todos los métodos nos modifican
|
| 244 |
+
el array original.
|
| 245 |
+
|
| 246 |
+
03:24.800 --> 03:27.800
|
| 247 |
+
Y por último, lo que vamos a hacer es
|
| 248 |
+
revisar
|
| 249 |
+
|
| 250 |
+
03:27.800 --> 03:30.800
|
| 251 |
+
si un array en efecto es un
|
| 252 |
+
array.
|
| 253 |
+
|
| 254 |
+
03:30.800 --> 03:32.800
|
| 255 |
+
¿Cómo podemos comprobar
|
| 256 |
+
esto?
|
| 257 |
+
|
| 258 |
+
03:32.800 --> 03:34.800
|
| 259 |
+
Voy a colocar acá, por
|
| 260 |
+
ejemplo,
|
| 261 |
+
|
| 262 |
+
03:34.800 --> 03:41.800
|
| 263 |
+
checking arrays with array is array, tal cual.
|
| 264 |
+
|
| 265 |
+
03:41.800 --> 03:43.800
|
| 266 |
+
Entonces, ¿cómo lo
|
| 267 |
+
escribimos?
|
| 268 |
+
|
| 269 |
+
03:43.800 --> 03:45.800
|
| 270 |
+
Vamos a colocar una
|
| 271 |
+
variable,
|
| 272 |
+
|
| 273 |
+
03:45.800 --> 03:48.800
|
| 274 |
+
le decimos is
|
| 275 |
+
array,
|
| 276 |
+
|
| 277 |
+
03:48.800 --> 03:51.800
|
| 278 |
+
ese sería el nombre de la variable como tal,
|
| 279 |
+
|
| 280 |
+
03:51.800 --> 03:55.800
|
| 281 |
+
y decimos
|
| 282 |
+
array.isArray,
|
| 283 |
+
|
| 284 |
+
03:55.800 --> 03:58.800
|
| 285 |
+
y aquí le colocamos frutas, por ejemplo,
|
| 286 |
+
|
| 287 |
+
03:58.800 --> 04:00.800
|
| 288 |
+
que ya hemos venido con este ejemplo.
|
| 289 |
+
|
| 290 |
+
04:00.800 --> 04:01.800
|
| 291 |
+
¿Qué colocamos
|
| 292 |
+
acá?
|
| 293 |
+
|
| 294 |
+
04:01.800 --> 04:04.800
|
| 295 |
+
Un console.log de nuevo, ¿de
|
| 296 |
+
quién?
|
| 297 |
+
|
| 298 |
+
04:04.800 --> 04:06.800
|
| 299 |
+
De
|
| 300 |
+
isArray.
|
| 301 |
+
|
| 302 |
+
04:06.800 --> 04:09.800
|
| 303 |
+
Entonces, vamos a guardar nuestro programa,
|
| 304 |
+
lo corremos,
|
| 305 |
+
|
| 306 |
+
04:09.800 --> 04:11.800
|
| 307 |
+
y aquí nos dice, ah,
|
| 308 |
+
mira,
|
| 309 |
+
|
| 310 |
+
04:11.800 --> 04:15.800
|
| 311 |
+
es que tú querías comprobar si en efecto
|
| 312 |
+
era un array,
|
| 313 |
+
|
| 314 |
+
04:15.800 --> 04:17.800
|
| 315 |
+
y aquí yo te estoy diciendo que
|
| 316 |
+
sí.
|
| 317 |
+
|
| 318 |
+
04:17.800 --> 04:21.800
|
| 319 |
+
Entonces, esto básicamente nos va a
|
| 320 |
+
arrojar un booleano,
|
| 321 |
+
|
| 322 |
+
04:21.800 --> 04:23.800
|
| 323 |
+
sea true o
|
| 324 |
+
false,
|
| 325 |
+
|
| 326 |
+
04:23.800 --> 04:26.800
|
| 327 |
+
para decirnos si ese array es o no es un
|
| 328 |
+
array,
|
| 329 |
+
|
| 330 |
+
04:26.800 --> 04:28.800
|
| 331 |
+
o esa variable es un array o
|
| 332 |
+
no.
|
| 333 |
+
|
| 334 |
+
04:28.800 --> 04:31.800
|
| 335 |
+
Vamos ahora a hacer un ejercicio
|
| 336 |
+
práctico
|
| 337 |
+
|
| 338 |
+
04:31.800 --> 04:34.800
|
| 339 |
+
donde vamos a involucrar no solamente los
|
| 340 |
+
arrays,
|
| 341 |
+
|
| 342 |
+
04:34.800 --> 04:37.800
|
| 343 |
+
sino también un for, por
|
| 344 |
+
ejemplo.
|
| 345 |
+
|
| 346 |
+
04:37.800 --> 04:39.800
|
| 347 |
+
Entonces, ¿cómo sería
|
| 348 |
+
eso?
|
| 349 |
+
|
| 350 |
+
04:39.800 --> 04:43.800
|
| 351 |
+
El ejercicio es básicamente sumar todos
|
| 352 |
+
los elementos
|
| 353 |
+
|
| 354 |
+
04:43.800 --> 04:45.800
|
| 355 |
+
que tenemos en un
|
| 356 |
+
array.
|
| 357 |
+
|
| 358 |
+
04:45.800 --> 04:46.800
|
| 359 |
+
¿Cómo lo vamos a
|
| 360 |
+
hacer?
|
| 361 |
+
|
| 362 |
+
04:46.800 --> 04:48.800
|
| 363 |
+
Vamos a crear, por
|
| 364 |
+
ejemplo,
|
| 365 |
+
|
| 366 |
+
04:48.800 --> 04:51.800
|
| 367 |
+
voy a escribir antes de todo un
|
| 368 |
+
comentario
|
| 369 |
+
|
| 370 |
+
04:51.800 --> 04:55.800
|
| 371 |
+
que diga practical
|
| 372 |
+
exercise,
|
| 373 |
+
|
| 374 |
+
04:55.800 --> 05:00.800
|
| 375 |
+
y vamos a decir que es la suma de todos
|
| 376 |
+
los elementos
|
| 377 |
+
|
| 378 |
+
05:00.800 --> 05:04.800
|
| 379 |
+
de un array, of an
|
| 380 |
+
array.
|
| 381 |
+
|
| 382 |
+
05:04.800 --> 05:05.800
|
| 383 |
+
Listo.
|
| 384 |
+
|
| 385 |
+
05:05.800 --> 05:08.800
|
| 386 |
+
Voy a correr mi código, y aquí voy a
|
| 387 |
+
empezar a escribir.
|
| 388 |
+
|
| 389 |
+
05:08.800 --> 05:14.800
|
| 390 |
+
Numbers, array, voy a colocarlo así,
|
| 391 |
+
|
| 392 |
+
05:14.800 --> 05:18.800
|
| 393 |
+
y seguido voy a escribir un array de quién,
|
| 394 |
+
|
| 395 |
+
05:18.800 --> 05:20.800
|
| 396 |
+
de números, puede ser
|
| 397 |
+
cualquiera,
|
| 398 |
+
|
| 399 |
+
05:20.800 --> 05:23.800
|
| 400 |
+
supongamos que tenemos del 1 al
|
| 401 |
+
5.
|
| 402 |
+
|
| 403 |
+
05:23.800 --> 05:27.800
|
| 404 |
+
Seguido, vamos a decir que tenemos una
|
| 405 |
+
variable,
|
| 406 |
+
|
| 407 |
+
05:27.800 --> 05:32.800
|
| 408 |
+
esa variable inicialmente va a tener un
|
| 409 |
+
valor que es 0.
|
| 410 |
+
|
| 411 |
+
05:32.800 --> 05:36.800
|
| 412 |
+
Ahora, si el ejercicio es de sumar todos
|
| 413 |
+
los números
|
| 414 |
+
|
| 415 |
+
05:36.800 --> 05:40.800
|
| 416 |
+
de un array, por supuesto, un array, un for,
|
| 417 |
+
|
| 418 |
+
05:40.800 --> 05:41.800
|
| 419 |
+
va a ser súper
|
| 420 |
+
efectivo.
|
| 421 |
+
|
| 422 |
+
05:41.800 --> 05:42.800
|
| 423 |
+
¿Por
|
| 424 |
+
qué?
|
| 425 |
+
|
| 426 |
+
05:42.800 --> 05:45.800
|
| 427 |
+
Porque nos va a ayudar a iterar en cada
|
| 428 |
+
una
|
| 429 |
+
|
| 430 |
+
05:45.800 --> 05:47.800
|
| 431 |
+
de las posiciones de este
|
| 432 |
+
array.
|
| 433 |
+
|
| 434 |
+
05:47.800 --> 05:48.800
|
| 435 |
+
¿Cómo lo vamos a
|
| 436 |
+
hacer?
|
| 437 |
+
|
| 438 |
+
05:48.800 --> 05:52.800
|
| 439 |
+
Vamos a escribir for, dentro de este for
|
| 440 |
+
vamos a colocar
|
| 441 |
+
|
| 442 |
+
05:52.800 --> 05:55.800
|
| 443 |
+
una variable que se va a llamar
|
| 444 |
+
i,
|
| 445 |
+
|
| 446 |
+
05:55.800 --> 05:58.800
|
| 447 |
+
y que va a empezar justamente en
|
| 448 |
+
0.
|
| 449 |
+
|
| 450 |
+
05:58.800 --> 06:02.800
|
| 451 |
+
Seguido, esta variable i va a tener un
|
| 452 |
+
valor
|
| 453 |
+
|
| 454 |
+
06:02.800 --> 06:06.800
|
| 455 |
+
que no exceda la cantidad de
|
| 456 |
+
elementos
|
| 457 |
+
|
| 458 |
+
06:06.800 --> 06:08.800
|
| 459 |
+
que hay justamente en un
|
| 460 |
+
array.
|
| 461 |
+
|
| 462 |
+
06:08.800 --> 06:10.800
|
| 463 |
+
Entonces, aquí también hacemos
|
| 464 |
+
alusión
|
| 465 |
+
|
| 466 |
+
06:10.800 --> 06:13.800
|
| 467 |
+
a nuestra propiedad length, donde le
|
| 468 |
+
estamos diciendo,
|
| 469 |
+
|
| 470 |
+
06:13.800 --> 06:17.800
|
| 471 |
+
oye, mira, es que resulta que el tamaño
|
| 472 |
+
como tal
|
| 473 |
+
|
| 474 |
+
06:17.800 --> 06:20.800
|
| 475 |
+
es de 1, 2, 3, 4, 5
|
| 476 |
+
posiciones,
|
| 477 |
+
|
| 478 |
+
06:20.800 --> 06:25.800
|
| 479 |
+
pero yo no quiero que vaya hasta 5, sino
|
| 480 |
+
hasta 4.
|
| 481 |
+
|
| 482 |
+
06:25.800 --> 06:27.800
|
| 483 |
+
Entonces le digo, ah, mira, es que yo
|
| 484 |
+
quiero
|
| 485 |
+
|
| 486 |
+
06:27.800 --> 06:29.800
|
| 487 |
+
que sea de i hasta 4
|
| 488 |
+
elementos.
|
| 489 |
+
|
| 490 |
+
06:29.800 --> 06:33.800
|
| 491 |
+
Y aquí lo que hacemos es colocarle i++,
|
| 492 |
+
|
| 493 |
+
06:33.800 --> 06:36.800
|
| 494 |
+
es decir, que vaya sumando progresivamente.
|
| 495 |
+
|
| 496 |
+
06:36.800 --> 06:39.800
|
| 497 |
+
Seguido de esto, lo que hacemos es
|
| 498 |
+
decirle
|
| 499 |
+
|
| 500 |
+
06:39.800 --> 06:42.800
|
| 501 |
+
que la suma va a ser igual a
|
| 502 |
+
quién?
|
| 503 |
+
|
| 504 |
+
06:42.800 --> 06:47.800
|
| 505 |
+
A el valor de numbers, que en este caso
|
| 506 |
+
sería este de aquí,
|
| 507 |
+
|
| 508 |
+
06:47.800 --> 06:50.800
|
| 509 |
+
el valor de nuestro array, vamos a
|
| 510 |
+
colocarlo por acá,
|
| 511 |
+
|
| 512 |
+
06:50.800 --> 06:52.800
|
| 513 |
+
más
|
| 514 |
+
1.
|
| 515 |
+
|
| 516 |
+
06:52.800 --> 06:55.800
|
| 517 |
+
Por ejemplo, entonces, para colocar esto,
|
| 518 |
+
|
| 519 |
+
06:55.800 --> 06:59.800
|
| 520 |
+
lo que hacemos es decirle más aquí a este
|
| 521 |
+
ladito, y ya.
|
| 522 |
+
|
| 523 |
+
06:59.800 --> 07:02.800
|
| 524 |
+
Entonces lo que hacemos es, la suma va a
|
| 525 |
+
ser
|
| 526 |
+
|
| 527 |
+
07:02.800 --> 07:07.800
|
| 528 |
+
este numbers array en la posición de la
|
| 529 |
+
variable i,
|
| 530 |
+
|
| 531 |
+
07:07.800 --> 07:11.800
|
| 532 |
+
en este caso sería 0, más lo que teníamos
|
| 533 |
+
anteriormente.
|
| 534 |
+
|
| 535 |
+
07:11.800 --> 07:13.800
|
| 536 |
+
Entonces lo escribimos de esta forma.
|
| 537 |
+
|
| 538 |
+
07:13.800 --> 07:17.800
|
| 539 |
+
Seguido, lo que vamos a hacer es colocar
|
| 540 |
+
un console.log
|
| 541 |
+
|
| 542 |
+
07:17.800 --> 07:19.800
|
| 543 |
+
¿de quién? De la
|
| 544 |
+
suma.
|
| 545 |
+
|
| 546 |
+
07:19.800 --> 07:21.800
|
| 547 |
+
Esta suma la podemos colocar por acá,
|
| 548 |
+
|
| 549 |
+
07:21.800 --> 07:23.800
|
| 550 |
+
vamos a guardar, corremos el código,
|
| 551 |
+
|
| 552 |
+
07:23.800 --> 07:26.800
|
| 553 |
+
y aquí ya tenemos que la suma de todos
|
| 554 |
+
nuestros valores
|
| 555 |
+
|
| 556 |
+
07:26.800 --> 07:29.800
|
| 557 |
+
de este array es efectivamente
|
| 558 |
+
15.
|
| 559 |
+
|
| 560 |
+
07:29.800 --> 07:33.800
|
| 561 |
+
5 más 4 es 9, 9 más este 1 son
|
| 562 |
+
10,
|
| 563 |
+
|
| 564 |
+
07:33.800 --> 07:36.800
|
| 565 |
+
más este 5, bueno, nos daría
|
| 566 |
+
15.
|
| 567 |
+
|
| 568 |
+
07:36.800 --> 07:38.800
|
| 569 |
+
Entonces este programa nos está funcionando,
|
| 570 |
+
|
| 571 |
+
07:38.800 --> 07:41.800
|
| 572 |
+
y justamente estamos haciendo alusión a
|
| 573 |
+
quién?
|
| 574 |
+
|
| 575 |
+
07:41.800 --> 07:44.800
|
| 576 |
+
A un array, y también a esa propiedad que
|
| 577 |
+
también vimos,
|
| 578 |
+
|
| 579 |
+
07:44.800 --> 07:47.800
|
| 580 |
+
que es justamente el length, para saber el
|
| 581 |
+
tamaño,
|
| 582 |
+
|
| 583 |
+
07:47.800 --> 07:50.800
|
| 584 |
+
y también la iteración justamente de un
|
| 585 |
+
array
|
| 586 |
+
|
| 587 |
+
07:50.800 --> 07:53.800
|
| 588 |
+
para saber la suma de todos los
|
| 589 |
+
elementos
|
| 590 |
+
|
| 591 |
+
07:53.800 --> 08:20.800
|
| 592 |
+
que tenemos allí
|
| 593 |
+
adentro.
|
| 594 |
+
|