2999a commited on
Commit
191968e
·
verified ·
1 Parent(s): 60ceedf

Upload via hfc (batch)

Browse files

Uploaded using hfc tool

This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +11 -0
  2. subir/Curso de Fundamentos de JavaScript/02-Estructuras de Control y Lógica/09-Lecturas recomendadas.txt +1 -0
  3. subir/Curso de Fundamentos de JavaScript/02-Estructuras de Control y Lógica/09-Resumen.html +0 -0
  4. 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
  5. 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
  6. subir/Curso de Fundamentos de JavaScript/02-Estructuras de Control y Lógica/09-index_d7170355-2163-4a7d-9633-bc5247dbcfd1.js +12 -0
  7. subir/Curso de Fundamentos de JavaScript/02-Estructuras de Control y Lógica/10-Ciclos doWhile Estructura y Diferencias con While.mp4 +3 -0
  8. subir/Curso de Fundamentos de JavaScript/02-Estructuras de Control y Lógica/10-Ciclos doWhile Estructura y Diferencias con While.vtt +206 -0
  9. subir/Curso de Fundamentos de JavaScript/02-Estructuras de Control y Lógica/10-Lecturas recomendadas.txt +1 -0
  10. subir/Curso de Fundamentos de JavaScript/02-Estructuras de Control y Lógica/10-Resumen.html +0 -0
  11. subir/Curso de Fundamentos de JavaScript/02-Estructuras de Control y Lógica/10-index_4e2b15d9-94de-49f9-bb60-c70238a85a25.js +14 -0
  12. subir/Curso de Fundamentos de JavaScript/03-Funciones y This/01-Funciones en JavaScript Cómo Calcular Precios con Descuentos.mp4 +3 -0
  13. subir/Curso de Fundamentos de JavaScript/03-Funciones y This/01-Lecturas recomendadas.txt +1 -0
  14. subir/Curso de Fundamentos de JavaScript/03-Funciones y This/01-Resumen.html +0 -0
  15. subir/Curso de Fundamentos de JavaScript/03-Funciones y This/01-clase-anatomia-de-una-funcion_ebd815d1-e594-4489-b4f8-47db59cdccb7.js +14 -0
  16. subir/Curso de Fundamentos de JavaScript/03-Funciones y This/02-Diferencias entre Funciones y Métodos en JavaScript.mp4 +3 -0
  17. subir/Curso de Fundamentos de JavaScript/03-Funciones y This/02-Diferencias entre Funciones y Métodos en JavaScript.vtt +815 -0
  18. subir/Curso de Fundamentos de JavaScript/03-Funciones y This/02-Lecturas recomendadas.txt +1 -0
  19. subir/Curso de Fundamentos de JavaScript/03-Funciones y This/02-Resumen.html +0 -0
  20. subir/Curso de Fundamentos de JavaScript/03-Funciones y This/02-clase-funciones-vs-metodos_ae2120c7-56da-4567-8adb-ad30c110a238.js +48 -0
  21. subir/Curso de Fundamentos de JavaScript/03-Funciones y This/03-Funciones Puras e Impuras en Programación Conceptos y Ejemplos.mp4 +3 -0
  22. subir/Curso de Fundamentos de JavaScript/03-Funciones y This/03-Funciones Puras e Impuras en Programación Conceptos y Ejemplos.vtt +843 -0
  23. subir/Curso de Fundamentos de JavaScript/03-Funciones y This/03-Lecturas recomendadas.txt +1 -0
  24. subir/Curso de Fundamentos de JavaScript/03-Funciones y This/03-Resumen.html +0 -0
  25. subir/Curso de Fundamentos de JavaScript/03-Funciones y This/03-clase-funciones-puras-e-impuras_e3c125f1-5bce-4b8b-a394-31d35f63fa55.js +41 -0
  26. subir/Curso de Fundamentos de JavaScript/03-Funciones y This/04-Arrow Functions y Enlace Léxico en JavaScript.mp4 +3 -0
  27. subir/Curso de Fundamentos de JavaScript/03-Funciones y This/04-Arrow Functions y Enlace Léxico en JavaScript.vtt +878 -0
  28. subir/Curso de Fundamentos de JavaScript/03-Funciones y This/04-Lecturas recomendadas.txt +1 -0
  29. subir/Curso de Fundamentos de JavaScript/03-Funciones y This/04-Resumen.html +0 -0
  30. subir/Curso de Fundamentos de JavaScript/03-Funciones y This/04-clase-arrow-functions_7e661920-826a-43c9-97cf-d5d67e3de5ea.js +29 -0
  31. subir/Curso de Fundamentos de JavaScript/03-Funciones y This/05-Lecturas recomendadas.txt +1 -0
  32. subir/Curso de Fundamentos de JavaScript/03-Funciones y This/05-Resumen.html +0 -0
  33. subir/Curso de Fundamentos de JavaScript/03-Funciones y This/05-Scope y Contextos de Ejecución en JavaScript.mp4 +3 -0
  34. subir/Curso de Fundamentos de JavaScript/03-Funciones y This/05-Scope y Contextos de Ejecución en JavaScript.vtt +1070 -0
  35. subir/Curso de Fundamentos de JavaScript/03-Funciones y This/06-Closures y Ámbito Léxico en JavaScript.mp4 +3 -0
  36. subir/Curso de Fundamentos de JavaScript/03-Funciones y This/06-Closures y Ámbito Léxico en JavaScript.vtt +324 -0
  37. subir/Curso de Fundamentos de JavaScript/03-Funciones y This/06-Lecturas recomendadas.txt +1 -0
  38. subir/Curso de Fundamentos de JavaScript/03-Funciones y This/06-Resumen.html +0 -0
  39. subir/Curso de Fundamentos de JavaScript/03-Funciones y This/06-clase-closures_ca9f5104-7c66-4fa3-9401-38f3ef032eef.js +53 -0
  40. subir/Curso de Fundamentos de JavaScript/03-Funciones y This/07-Fundamentos del Desarrollo Web Frontend y Backend.mp4 +3 -0
  41. subir/Curso de Fundamentos de JavaScript/03-Funciones y This/07-Fundamentos del Desarrollo Web Frontend y Backend.vtt +197 -0
  42. subir/Curso de Fundamentos de JavaScript/03-Funciones y This/07-Lecturas recomendadas.txt +1 -0
  43. subir/Curso de Fundamentos de JavaScript/03-Funciones y This/07-Resumen.html +0 -0
  44. subir/Curso de Fundamentos de JavaScript/04-Manipulación de Arrays/01-Arrays Propiedades Acceso y Creación en Programación.mp4 +3 -0
  45. subir/Curso de Fundamentos de JavaScript/04-Manipulación de Arrays/01-Arrays Propiedades Acceso y Creación en Programación.vtt +629 -0
  46. subir/Curso de Fundamentos de JavaScript/04-Manipulación de Arrays/01-Lecturas recomendadas.txt +1 -0
  47. subir/Curso de Fundamentos de JavaScript/04-Manipulación de Arrays/01-Resumen.html +0 -0
  48. subir/Curso de Fundamentos de JavaScript/04-Manipulación de Arrays/01-clase-introduccion-arrays_e21fb09f-1ffe-42e2-8535-ee8181c2f83c.js +71 -0
  49. 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
  50. 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
+