1
00:00:01,380 --> 00:00:07,980
Bienvenido de nuevo en el video anterior, aprendemos que cuando la palabra clave this no está dentro de un

2
00:00:08,790 --> 00:00:11,580
objeto declarado, su valor es el objeto global.

3
00:00:11,820 --> 00:00:16,980
Vamos a demostrar rápidamente lo que quiero decir con objeto declarado en caso de que el video anterior todavía

4
00:00:16,980 --> 00:00:18,180
te deje un poco confundido.

5
00:00:18,180 --> 00:00:21,250
Recuerde que el material aquí es bastante desafiante.

6
00:00:21,420 --> 00:00:26,550
Así que intente ver estos videos un par de veces y escriba los ejemplos del código para reforzar su conocimiento.

7
00:00:28,470 --> 00:00:31,310
Voy a hacer un objeto vacío llamado datos.

8
00:00:31,440 --> 00:00:38,650
Lo que acabo de hacer es declarado objeto, el objeto de datos no existía hasta que lo declare.

9
00:00:38,670 --> 00:00:45,920
Ahora voy a adjuntar una propiedad en este objeto llamado instructor y establecer el valor igual a LTE.

10
00:00:46,620 --> 00:00:55,150
Ahora nuestro objeto de datos que declaramos tiene una clave con el valor de elhi dentro de él.

11
00:00:55,230 --> 00:00:59,200
Esto es lo que queremos decir cuando decimos dentro de un objeto declarado.

12
00:00:59,520 --> 00:01:01,750
Si eso todavía te confunde, está bien.

13
00:01:01,800 --> 00:01:07,770
Tendrá aún más sentido cuando examinemos la segunda regla y veamos la palabra clave this dentro de un objeto.

14
00:01:08,820 --> 00:01:10,780
Ahora terminemos con la primera regla.

15
00:01:11,010 --> 00:01:17,340
Como puede ver aquí cuando ponemos la palabra clave dentro de una función, su valor sigue siendo el

16
00:01:17,400 --> 00:01:18,290
objeto global.

17
00:01:18,600 --> 00:01:25,800
Recuerde que dijimos que la regla global se aplica a menos que la palabra clave esté dentro de un objeto declarado, pero

18
00:01:26,190 --> 00:01:28,590
está dentro de una función en este momento.

19
00:01:28,950 --> 00:01:36,270
Entonces, cuando llamamos a la función ¿qué es esto? El valor devuelto es el objeto ventana.

20
00:01:36,270 --> 00:01:38,340
Ahora veamos un ejemplo final.

21
00:01:38,640 --> 00:01:46,060
Qué sucede si adjuntamos propiedades a la palabra clave this cuando su valor es el objeto global.

22
00:01:46,110 --> 00:01:52,590
Y recuerda que cuando digo Objeto global me refiero al objeto ventana en diferentes entornos de JavaScript.

23
00:01:52,680 --> 00:01:54,410
Este valor cambiará

24
00:01:54,540 --> 00:01:59,730
Pero como estamos en el navegador, el objeto global es el objeto ventana.

25
00:01:59,730 --> 00:02:05,340
Ahora echemos un vistazo a nuestras variables en esta función en las variables en esta función.

26
00:02:05,340 --> 00:02:12,100
Estamos adjuntando una propiedad a la palabra clave llamada Persona y configurándola igual a Ellie.

27
00:02:12,420 --> 00:02:20,010
Dado que la palabra clave se refiere al objeto global, todo lo que le atribuimos se convierte en una variable global, lo

28
00:02:20,370 --> 00:02:23,340
que significa que podemos usarlo fuera de la función.

29
00:02:23,340 --> 00:02:28,930
Esto puede parecer algo que podríamos querer hacer, pero en realidad es una práctica muy mala.

30
00:02:29,670 --> 00:02:34,680
Repasemos rápidamente cómo funcionan las variables y el alcance en JavaScript.

31
00:02:34,680 --> 00:02:39,780
Voy a declarar una variable llamada perro y dije que el valor es igual a Rusty.

32
00:02:39,810 --> 00:02:47,100
y dentro de declarar una variable llamada persona usando la palabra clave VAR y decir que es igual a código.

33
00:02:47,100 --> 00:02:50,610
Luego voy a hacer una función llamada mansa persona

34
00:02:50,790 --> 00:02:57,420
Como he declarado esta variable dentro de la función y no devuelvo su valor, no tengo

35
00:02:57,420 --> 00:03:00,430
acceso a ella fuera de la función.

36
00:03:00,450 --> 00:03:07,410
Sin embargo, desde que declare mi variable de perro en el ámbito global, tengo acceso a ella en todas partes.

37
00:03:08,160 --> 00:03:13,830
Ahora podemos evitar el problema de no poder acceder a nuestra variable persona omitiendo la palabra

38
00:03:13,830 --> 00:03:16,020
clave VAR dentro de nuestra función.

39
00:03:16,020 --> 00:03:18,900
Sin embargo, esta es una muy mala práctica.

40
00:03:18,960 --> 00:03:24,900
no tienen un valor y luego asignar esos valores en un momento posterior de una función.

41
00:03:25,110 --> 00:03:31,590
En general, es una buena práctica declarar todas nuestras variables que queremos usar en múltiples funciones en la

42
00:03:31,680 --> 00:03:34,370
parte superior de nuestro código, incluso si

43
00:03:34,380 --> 00:03:41,550
Desafortunadamente, dado que la palabra clave es el objeto global, es bastante fácil declarar accidentalmente

44
00:03:41,550 --> 00:03:44,400
variables globales dentro de una función.

45
00:03:44,400 --> 00:03:47,340
Veamos un ejemplo.

46
00:03:47,340 --> 00:03:54,300
Voy a hacer una función llamada error un conjunto interno una propiedad sobre la palabra clave llamada mala idea

47
00:03:54,300 --> 00:03:57,060
para que sea igual a la cadena.

48
00:03:57,100 --> 00:03:58,480
Whoops.

49
00:03:58,770 --> 00:04:05,400
Ahora voy a llamar a esa función y podemos ver que tengo acceso a mi variable de mala idea.

50
00:04:05,400 --> 00:04:09,390
Accidentalmente acabo de hacer una variable global.

51
00:04:09,390 --> 00:04:16,290
Afortunadamente en sí 5 se agregó la versión anterior de JavaScript, algo llamado modo estricto para ayudarnos.

52
00:04:16,290 --> 00:04:16,440
&nbsp;

53
00:04:16,440 --> 00:04:21,870
Los desarrolladores de Javascript leen mejor cuando el modo estricto está habilitado.

54
00:04:21,960 --> 00:04:26,460
Lo cual puedes hacer agregando uso estricto entre comillas dobles.

55
00:04:26,670 --> 00:04:31,760
El valor de la palabra clave this cuando está dentro de una función no está definido.

56
00:04:31,800 --> 00:04:34,530
No es el objeto global.

57
00:04:34,530 --> 00:04:38,870
Esto significa que si tratamos de adjuntar propiedades, obtenemos un error de tipo.

58
00:04:38,940 --> 00:04:44,270
Dado que no podemos adjuntar propiedades a indefinido, es posible que haya visto este error un poco.

59
00:04:44,280 --> 00:04:50,440
Esto nos impide crear accidentalmente variables globales y nos permite utilizar las mejores prácticas de JavaScript.

60
00:04:52,140 --> 00:04:57,660
En este video, revisamos la primera regla para determinar la palabra clave this y vimos cómo

61
00:04:57,720 --> 00:05:00,860
podemos crear accidentalmente variables globales dentro de las funciones.

62
00:05:00,870 --> 00:05:06,410
También vimos cómo el modo estricto puede evitar que cometamos este error en el próximo video.

63
00:05:06,450 --> 00:05:12,330
Discutiremos la segunda regla y cuál es el valor de la palabra clave cuando está

64
00:05:12,330 --> 00:05:14,190
dentro de un objeto declarado.
