Contenido del curso
Primeros Pasos
- 5

¡Hola Mundo!
06:13 min - 6

Anatomía de una variable
09:23 min - 7

Tipos de datos: Mutabilidad e inmutabilidad
10:55 min - 8

Paso por valor
11:06 min - 9

Paso por referencia
Viendo ahora - 10

Creación de strings
11:33 min - 11

Concatenación de strings
08:31 min - 12

Manipulación de strings
12:13 min - 13

Tipo de dato primitivo: number
09:30 min - 14

Conversión a Booleanos
05:08 min - 15

Tipos de datos primitivos: null, undefined, symbol y bigint
07:28 min - 16

Conversión de tipos: Type Casting y Coercion
04:38 min - 17

Conversión de tipos explícita e implícita
12:20 min - 18

Proyecto: Crea un perfil para redes sociales con JavaScript
07:23 min
Funciones y This
- 19

Anatomía de una función
11:39 min - 20

Preguntas a Desarrolladores Senior: ¿Por qué aprender Desarrollo Web?
02:11 min - 21

Funciones vs Métodos
10:01 min - 22

Funciones puras e impuras
11:22 min - 23

Identificador this
11:38 min - 24

Métodos bind, call y apply
10:09 min - 25

Funciones flecha y enlace léxico
10:31 min - 26

Implicaciones de duplicar código
03:19 min - 27

Funciones constructoras
10:41 min - 28

10 Tipos de funciones
01:39 min - 29

Objeto window y modo estricto
07:37 min - 30

Tipos de binding
01:11 min - 31

Expresiones vs Sentencias
04:02 min - 32

Proyecto: Crea biografías de personajes con JavaScript
12:51 min
Lógica y ciclos
- 33

Operadores de comparación
06:12 min - 34

Operadores lógicos
04:33 min - 35

Ejecución condicional: if
07:45 min - 36

Proyecto: Adivina el número
09:36 min - 37

Ejecución condicional: ternario
05:24 min - 38

Ejecución condicional: switch
12:08 min - 39

Loop: for
07:31 min - 40

Loop: forEach
03:57 min - 41

Loop: for of
04:26 min - 42

Loop: for in
07:38 min - 43

Loop: while
03:56 min - 44

Loop: do while
03:13 min - 45

Proyecto: Juego adivina la palabra
15:56 min
Fundamentos de arrays y modificación
- 46

Introducción a Arrays
09:09 min - 47

Mutabilidad e inmutabiliad de Arrays
07:56 min - 48

Modificación básica del final con push(), pop()
04:33 min - 49

Ejercicio: Stack de libros
16:03 min - 50

Modificación del principio con shift(), unshift()
10:21 min - 51

Modificación avanzada con splice(), reverse(), sort(), fill()
16:37 min - 52

Proyecto: Juego de cartas
15:37 min - 53

Preguntas a Desarrolladores Senior: Estrategias y métodos de estudio
01:10 min
Iteración de Arrays
- 54

Iteración con map() y forEach()
12:53 min - 55

Filtrado y reducción con filter() y reduce()
11:34 min - 56

Ejercicio: Calificación promedio aprobatoria
05:27 min - 57

Búsqueda de elementos con find() y findIndex()
03:52 min - 58

Ejercicio: Encuentra al ganador de una rifa
11:21 min - 59

Proyecto: Análisis de transacciones
10:55 min - 60

Proyecto: Análisis de transacciones parte 2
08:01 min
Métodos específicos y Operaciones
- 61

Unir y entrelazar con concat(), spread operator y join()
12:05 min - 62

Verificación y evaluación con every() y some()
05:15 min - 63

Métodos de búsqueda con includes(), indexOf() y lastIndexOf()
07:05 min - 64

Ejercicio: Encontrando los índices
11:09 min - 65

Crear copias con slice()
05:28 min - 66

Spread operator: casos de uso
07:11 min
Arrays multidimencionales
Clases y Objetos
- 71

Anatomia de un Objeto
06:48 min - 72

Trabajando con objetos
12:52 min - 73

Función constructora
14:31 min - 74

¿Qué es una clase?
06:17 min - 75

Prototipos y herencias
02:15 min - 76

Herencia en la práctica
15:38 min - 77

Prototipos en la práctica
10:42 min - 78

this en JavaScript
05:36 min - 79

Proyecto: Crea una red social
12:25 min - 80

Proyecto: Crea una red social parte 2
09:00 min
Paso por referencia
Resumen
¿Qué es el paso por referencia en JavaScript?
En JavaScript, entender cómo funcionan las referencias es clave para manejar objetos y arrays eficazmente. El paso por referencia se refiere a que, cuando asignamos un objeto a una variable, estamos apuntando a la misma ubicación en memoria. Esto significa que las modificaciones en cualquiera de las variables afectan el mismo objeto en memoria.
¿Cómo afecta esto a los objetos?
Cuando creamos un objeto en JavaScript y lo asignamos a una variable, lo que realmente estamos haciendo es crear una referencia a ese objeto en la memoria. Por ejemplo, si declaramos:
let frutas = { naranja: "🍊" }; let vegetales = frutas;
Ambas variables frutas y vegetales apuntan al mismo objeto. Cualquier cambio que hagamos a través de una de las variables se verá reflejado en la otra. Si hacemos:
vegetales.naranja = "🥦"; console.log(frutas);
Veremos que el valor de frutas.naranja también cambia a "🥦", debido a que ambas variables comparten la misma referencia.
¿Qué sucede al modificar objetos?
Al modificar los objetos, ya sea añadiendo nuevas propiedades o cambiando las existentes, la referencia sigue apuntando al mismo lugar en la memoria. Por ejemplo, si tenemos un objeto ropa:
let ropa = { blusa: "👚" }; ropa.pantalón = "👖"; console.log(ropa);
El objeto ropa ahora tiene ambas propiedades: blusa y pantalón. Cada actualización o adición a las propiedades de un objeto no crea un nuevo objeto sino que modifica el existente.
¿Cómo se gestiona la memoria en JavaScript?
JavaScript maneja la memoria de manera automatizada y existe un concepto crucial llamado Garbage Collection o recolección de basura. Este proceso se encarga de liberar la memoria de referencias que ya no se están utilizando, eficientizando los recursos.
¿Por qué es importante la recolección de basura?
Imagina que has creado una referencia a un objeto pero luego creas otra referencia y pasas a usar sólo la nueva. La primera referencia se queda sin uso. JavaScript, mediante la recolección de basura, identifica estas situaciones y las elimina para hacer un uso eficiente de la memoria. Esto es esencial, sobre todo en aplicaciones grandes, para prevenir el agotamiento de recursos y mejorar la performance.
¿Qué pasa cuando el garbage collector actúa?
En esencia, JavaScript detecta cuando una referencia a un objeto ya no es accesible desde el código y la elimina de la memoria. Siguiendo el ejemplo previo:
let ropa = { blusa: "👚" }; ropa = { blusa: "👚", pantalón: "👖" };
La primera referencia a ropa quedaría inaccesible una vez redefinimos ropa. Así, el recolector de basura puede liberar la memoria ocupada por la referencia previa.
Consejos para manejar las referencias en JavaScript
-
Evita modificar objetos directamente: Si deseas pasar un objeto a una función y asegurar que no sea modificado, es mejor pasar una copia del objeto.
-
Usa
Object.assigno el operador de propagación: Esto te permitirá crear copias superficial de los objetos que eviten la modificación directa de los originales. -
Sé consciente del estado de tu aplicación: Tener un entendimiento claro de cuándo y dónde se necesita una referencia o un nuevo objeto te ayudará a evitar comportamientos inesperados.
El dominio de estos conceptos te dotará de herramientas poderosas para el manejo eficiente de la memoria y el diseño de aplicaciones robustas. ¡Sigue practicando y explorando!