Funciones, procesos y ejecución de JavaScript
Dominar JavaScript requiere entender cómo se ejecuta el código.
Aquí están los conceptos fundamentales que necesitas conocer.
1. 5 tipos de funciones en JavaScript
- Función con nombre (Named Function): Utiliza un nombre específico. Esto te ayuda a depurar errores rápidamente.
- Función anónima (Anonymous Function): No tiene nombre. Se utilizan para callbacks o asignaciones de variables.
- Expresión de función (Function Expression): Asignas una función a una variable.
- Función de flecha (Arrow Function): Una sintaxis corta que utiliza el símbolo
=>. Maneja la palabra clavethisde manera diferente. - IIFE: Se ejecuta en el momento en que la defines. Mantiene tu código aislado.
2. Proceso vs. Hilo (Thread)
Un Proceso es un programa en ejecución. Cada proceso tiene su propia memoria. Si Chrome falla, Spotify sigue funcionando porque son procesos separados.
Un Hilo (Thread) es una unidad pequeña dentro de un proceso. Los hilos comparten la misma memoria. Esto los hace más rápidos y ligeros que los procesos.
3. Síncrono vs. Asíncrono
JavaScript es monohilo (single-threaded). Por lo general, ejecuta una tarea a la vez.
Ejecución síncrona: Las tareas se ejecutan en un orden estricto. La siguiente línea espera a que la línea actual termine. Esto puede ralentizar tu aplicación si una tarea tarda demasiado.
Ejecución asíncrona: Las tareas pueden comenzar ahora y terminar más tarde. Esto evita que tu código se bloquee.
Cómo funciona:
- El Call Stack gestiona tus tareas actuales.
- Las Web APIs gestionan tareas largas, como temporizadores o solicitudes de datos, en segundo plano.
- La Callback Queue contiene las tareas finalizadas.
- El Event Loop mueve las tareas de la cola de vuelta a la pila cuando esta se encuentra vacía.
Ejemplo de flujo asíncrono:
- Imprimir "Hi"
- Iniciar un temporizador de 2 segundos
- Imprimir "End"
- (Pasan 2 segundos) Imprimir "Vicky"
El código no espera al temporizador. Pasa a "End" inmediatamente.
Comunidad de aprendizaje opcional: https://t.me/GyaanSetuAi