Guía JavaScript
Guía JavaScript
2. ¿Cuál es la diferencia entre var, let y const en JavaScript? En JavaScript, var, let y
const se utilizan para declarar variables, pero tienen diferencias significativas. var es una
declaración de variable de ámbito global o de función, lo que significa que puede ser accedida
fuera del bloque en el que se declara. let, por otro lado, tiene un ámbito de bloque, lo que
significa que solo se puede acceder dentro del bloque donde se declara. const también tiene
un ámbito de bloque, pero se utiliza para declarar constantes que no pueden ser reasignadas.
Es importante elegir la declaración adecuada según el uso que se le dará a la variable.
3. ¿Qué son las funciones en JavaScript y cómo se declaran? Las funciones en JavaScript
son bloques de código reutilizables que pueden ser llamados para realizar tareas específicas.
Se pueden declarar de varias maneras: como una declaración de función, una expresión de
función o una función de flecha. Una declaración de función se ve así:
4. ¿Qué son los objetos en JavaScript y cómo se crean? Los objetos en JavaScript son
colecciones de propiedades, donde cada propiedad se compone de una clave (o nombre) y
un valor. Se pueden crear de varias maneras: utilizando la sintaxis de objeto literal o mediante
la función Object. Por ejemplo:
Los objetos son fundamentales en JavaScript, ya que permiten organizar y estructurar datos
de manera efectiva.
5. ¿Qué es el DOM y cómo se manipula con JavaScript? El DOM (Document Object Model)
es una representación en forma de árbol de la estructura de un documento HTML o XML.
JavaScript se utiliza para manipular el DOM, lo que permite a los desarrolladores modificar el
contenido, la estructura y el estilo de una página web en tiempo real. Se pueden seleccionar
elementos utilizando métodos como getElementById, querySelector o
getElementsByClassName, y se pueden modificar sus propiedades o añadir eventos. Por
ejemplo:
6. ¿Qué son las promesas en JavaScript y cómo se utilizan? Las promesas son una forma
de manejar operaciones asincrónicas en JavaScript. Representan un valor que puede estar
disponible ahora, en el futuro o nunca. Una promesa puede estar en uno de tres estados:
pendiente, cumplida o rechazada. Se crean utilizando el constructor Promise y se utilizan los
métodos .then() y .catch() para manejar los resultados. Por ejemplo:
7. ¿Qué son las funciones de orden superior en JavaScript? Las funciones de orden
superior son funciones que pueden recibir otras funciones como argumentos o devolver
funciones como resultado. Esto permite crear funciones más abstractas y reutilizables. Un
ejemplo clásico es el método map, que se utiliza para aplicar una función a cada elemento de
un array:
8. ¿Qué son los arrays y cómo se manipulan en JavaScript? Los arrays son estructuras de
datos que permiten almacenar múltiples valores en una sola variable. En JavaScript, se
pueden crear utilizando corchetes [] y se pueden manipular utilizando métodos como push,
pop, shift, unshift, splice, y slice. Por ejemplo:
9. ¿Cómo se manejan los eventos en JavaScript? Los eventos en JavaScript son acciones
que ocurren en el navegador, como clics de mouse, movimientos del mouse, teclas
presionadas, entre otros. Se pueden manejar utilizando el método addEventListener, que
permite registrar una función que se ejecutará cuando ocurra un evento específico. Por
ejemplo:
10. ¿Qué es el 'hoisting' en JavaScript? El 'hoisting' es un comportamiento en JavaScript en el
que las declaraciones de variables y funciones son elevadas a la parte superior de su
contexto de ejecución antes de que se ejecute el código. Esto significa que se pueden utilizar
variables y funciones antes de su declaración en el código. Sin embargo, solo las
declaraciones son elevadas, no las inicializaciones. Por ejemplo:
11. ¿Qué son las plantillas literales y cómo se utilizan? Las plantillas literales son una forma
de crear cadenas de texto que permiten interpolación de variables y expresiones. Se definen
utilizando backticks ` en lugar de comillas simples o dobles. Esto permite incluir variables y
expresiones directamente dentro de la cadena utilizando ${}. Por ejemplo:
12. ¿Qué es el 'this' en JavaScript y cómo se comporta? La palabra clave this en JavaScript
se refiere al contexto de ejecución en el que se encuentra. Su valor puede cambiar
dependiendo de cómo se invoque la función. En métodos de objetos, this se refiere al objeto
que está llamando el método. En funciones normales, this puede referirse al objeto global
(en modo no estricto) o ser undefined (en modo estricto). Por ejemplo:
13. ¿Qué es un 'callback' en JavaScript? Un 'callback' es una función que se pasa como
argumento a otra función y se ejecuta después de que se completa una operación. Esto es
común en operaciones asincrónicas para manejar el resultado. Por ejemplo:
14. ¿Qué son los módulos en JavaScript y cómo se utilizan? Los módulos en JavaScript
permiten dividir el código en archivos independientes y reutilizables, lo que mejora la
organización y el mantenimiento del código. Se pueden crear utilizando la sintaxis de módulos
ES6, donde se utiliza export para exportar elementos y import para importarlos en otro
módulo. Por ejemplo:
15. ¿Qué son los 'setters' y 'getters' en JavaScript? Los 'setters' y 'getters' son métodos que
permiten acceder y modificar propiedades de un objeto de manera controlada. Se definen
utilizando la sintaxis get y set. Esto permite crear lógica adicional al obtener o establecer el
valor de una propiedad. Por ejemplo:
16. ¿Qué son los 'Promises' y cómo funcionan? Las 'Promises' son objetos que representan el
resultado eventual de una operación asincrónica. Una promesa puede estar en uno de tres
estados: pendiente (pending), cumplida (fulfilled) o rechazada (rejected). Cuando una
promesa se cumple, se puede manejar el resultado utilizando el método .then(), y si es
rechazada, se puede manejar el error con .catch(). Por ejemplo:
17. ¿Qué es el 'Event Loop' en JavaScript? El 'Event Loop' es un mecanismo que permite que
JavaScript realice operaciones asincrónicas, a pesar de ser un lenguaje de un solo hilo.
Cuando se ejecuta un script, las operaciones se colocan en una cola y el 'Event Loop' las
procesa una vez que el stack de ejecución está vacío. Esto permite que el código continúe
ejecutándose mientras espera que se completen tareas asincrónicas, como llamadas a la API
o temporizadores.
18. ¿Cómo se manejan los errores en JavaScript? En JavaScript, se pueden manejar errores
utilizando bloques try...catch. El código que puede causar un error se coloca dentro del
bloque try, y si se produce un error, el control se transfiere al bloque catch, donde se puede
manejar el error de manera adecuada. Por ejemplo:
19. ¿Qué son las expresiones regulares y cómo se utilizan en JavaScript? Las expresiones
regulares son patrones utilizados para hacer coincidir combinaciones de caracteres en
cadenas de texto. En JavaScript, se pueden crear utilizando la sintaxis /patrón/ o con el
constructor RegExp. Las expresiones regulares se utilizan para validar datos, buscar o
reemplazar texto en cadenas. Por ejemplo:
20. ¿Qué son los 'arrow functions' y cómo se diferencian de las funciones regulares? Las
'arrow functions' son una forma concisa de escribir funciones en JavaScript. Se definen
utilizando la sintaxis () => {}. Tienen varias diferencias con las funciones regulares, como
la manera en que manejan el contexto de this, que se hereda del contexto externo en lugar
de ser definido por la función misma. Por ejemplo:
21. ¿Qué son los 'template literals' y cómo se utilizan? Los 'template literals' son una
característica de ES6 que permite crear cadenas de texto más fácilmente, permitiendo
interpolación de variables y expresiones. Se definen utilizando backticks ` en lugar de
comillas. Esto facilita la creación de cadenas multilínea y la inserción de variables. Por
ejemplo:
22. ¿Cómo funcionan las 'IIFE' (Immediately Invoked Function Expressions)? Las 'IIFE' son
funciones que se definen y se invocan inmediatamente. Se utilizan comúnmente para crear un
ámbito local y evitar la contaminación del ámbito global. Se definen encerrando la función en
paréntesis y agregando () al final. Por ejemplo:
23. ¿Qué es 'JSON' y cómo se utiliza en JavaScript? JSON (JavaScript Object Notation) es un
formato ligero de intercambio de datos que es fácil de leer y escribir para los humanos, y fácil
de analizar y generar para las máquinas. En JavaScript, se puede convertir un objeto a una
cadena JSON utilizando JSON.stringify(), y convertir una cadena JSON en un objeto
utilizando JSON.parse(). Por ejemplo:
24. ¿Qué es el 'scope' en JavaScript y cómo funciona? El 'scope' se refiere a la accesibilidad
de variables en diferentes partes de un programa. JavaScript tiene un 'scope' global y un
'scope' local. Las variables declaradas en el ámbito global son accesibles en cualquier parte
del código, mientras que las variables declaradas dentro de una función son locales a esa
función y no son accesibles fuera de ella. Con ES6, también se introdujo el 'scope' de bloque,
que se refiere a variables declaradas con let o const dentro de un bloque {}.
25. ¿Qué son los 'modules' en JavaScript? Los 'modules' son archivos de JavaScript que
exportan y importan funcionalidades, permitiendo organizar y encapsular código. Esto ayuda a
evitar conflictos de nombres y facilita el mantenimiento del código. Se pueden usar la sintaxis
export e import para definir y utilizar módulos. Por ejemplo:
26. ¿Cómo funcionan los bucles en JavaScript y cuáles son los más comunes? Los bucles
se utilizan para ejecutar un bloque de código varias veces. Los bucles más comunes en
JavaScript son for, while y forEach. El bucle for se utiliza para iterar sobre números,
mientras que while se ejecuta mientras una condición sea verdadera. forEach se utiliza
para iterar sobre arrays de manera más sencilla. Ejemplo de un bucle for:
27. ¿Qué son los 'spread operators' y cómo se utilizan? El 'spread operator' (...) permite
expandir iterables (como arrays) en lugares donde se esperan elementos individuales. Se
utiliza comúnmente para combinar arrays, crear copias de objetos o arrays, y en parámetros
de funciones. Por ejemplo:
28. ¿Qué son las 'async/await' en JavaScript? Las palabras clave async y await son una
forma de manejar operaciones asincrónicas de manera más sencilla y legible. Una función
marcada como async siempre devolverá una promesa, y dentro de ella, se puede utilizar
await para esperar a que una promesa se resuelva antes de continuar. Esto simplifica el
manejo de promesas. Por ejemplo:
29. ¿Qué son las funciones recursivas en JavaScript? Las funciones recursivas son funciones
que se llaman a sí mismas para resolver un problema dividiéndolo en subproblemas más
pequeños. Esto es útil para problemas que tienen una estructura repetitiva, como calcular el
factorial de un número o realizar operaciones sobre estructuras de datos como árboles. Un
ejemplo simple de una función recursiva es:
30. ¿Qué son los eventos 'bubbling' y 'capturing' en JavaScript? En JavaScript, los eventos
pueden ser manejados en dos fases: 'bubbling' y 'capturing'. En la fase de 'bubbling', el evento
se propaga desde el elemento más específico (donde ocurrió el evento) hacia arriba hasta el
elemento raíz. En la fase de 'capturing', el evento se propaga desde el elemento raíz hacia
abajo hasta el elemento más específico. Los desarrolladores pueden especificar qué fase se
desea usar al agregar un evento. Por ejemplo:
32. ¿Qué es el 'fetch API' y cómo se utiliza? El 'fetch API' es una interfaz moderna de
JavaScript que permite realizar solicitudes HTTP de manera sencilla. Se utiliza para obtener
recursos de la red y devolver promesas que se resuelven con la respuesta del servidor. Es
más fácil de usar que el antiguo XMLHttpRequest. Por ejemplo:
33. ¿Qué son los métodos de array como map, filter y reduce? map, filter y reduce
son métodos de array que permiten transformar y manipular datos de manera funcional.
● map crea un nuevo array con los resultados de aplicar una función a cada elemento del
array original.
● filter crea un nuevo array con todos los elementos que cumplen una condición
específica.
● reduce aplica una función a un acumulador y a cada elemento del array (de izquierda
a derecha) para reducirlo a un solo valor. Ejemplo:
34. ¿Qué son los 'default parameters' en JavaScript? Los 'default parameters' permiten definir
valores predeterminados para los parámetros de una función. Si no se pasa un argumento al
llamar a la función, se utilizará el valor predeterminado. Esto mejora la legibilidad y la
flexibilidad de las funciones. Ejemplo:
37. ¿Qué son los eventos personalizados en JavaScript? Los eventos personalizados
permiten a los desarrolladores crear y disparar eventos específicos en el DOM. Esto es útil
para encapsular la lógica de la aplicación y permitir una comunicación más flexible entre
componentes. Se pueden crear utilizando el constructor CustomEvent. Ejemplo:
38. ¿Qué es el 'this' en funciones de flecha? En funciones de flecha, this no se vincula a la
función misma, sino que hereda el valor de this del contexto en el que se define. Esto es útil
para evitar problemas de contexto en callbacks. Por ejemplo:
39. ¿Cómo se pueden manejar las promesas en cadena? Las promesas se pueden encadenar
utilizando el método .then(), que devuelve una nueva promesa. Esto permite ejecutar
múltiples operaciones asincrónicas de manera secuencial. Ejemplo:
40. ¿Qué es el 'template literal' y cómo se utiliza? Los 'template literals' son una forma de
crear cadenas en JavaScript que permiten la interpolación de variables y expresiones. Se
definen utilizando backticks ` en lugar de comillas simples o dobles, y permiten crear cadenas
multilínea. Por ejemplo:
41. ¿Qué son los 'symbols' en JavaScript? Los 'symbols' son un tipo de dato primitivo
introducido en ES6 que se utilizan para crear identificadores únicos para propiedades de
objetos. Esto evita conflictos con otras propiedades, ya que cada símbolo es único, incluso si
tienen el mismo descripción. Ejemplo:
43. ¿Qué son los iteradores en JavaScript? Los iteradores son objetos que permiten recorrer
colecciones de datos, como arrays o mapas, de una manera controlada. Un objeto iterador
tiene un método next() que devuelve el siguiente valor en la colección. Esto permite crear
estructuras de datos personalizadas y recorrerlas. Ejemplo de un iterador simple:
44. ¿Qué es el 'Map' y el 'Set' en JavaScript? Map es una colección de pares clave-valor donde
las claves pueden ser de cualquier tipo. Es útil para almacenar datos relacionados. Set es
una colección de valores únicos, que no permite duplicados. Ambos son introducidos en ES6
y tienen métodos útiles para manipular sus elementos. Ejemplo:
45. ¿Qué son los 'service workers' y cómo se utilizan? Los 'service workers' son scripts que el
navegador ejecuta en segundo plano, separados de una página web, lo que permite manejar
eventos como la sincronización en segundo plano, la recepción de notificaciones push y la
interceptación de solicitudes de red. Son fundamentales para construir aplicaciones web
progresivas (PWA). Se registran utilizando el método
navigator.serviceWorker.register(). Ejemplo:
46. ¿Cómo se implementa el 'debouncing' y 'throttling' en JavaScript? El 'debouncing' y
'throttling' son técnicas utilizadas para controlar la frecuencia de ejecución de funciones,
especialmente en eventos como desplazamiento o redimensionamiento. 'Debouncing' retrasa
la ejecución de la función hasta que haya pasado un cierto tiempo desde la última llamada,
mientras que 'throttling' asegura que la función se ejecute al menos una vez cada cierto
período de tiempo. Ejemplo de 'debouncing':
47. ¿Qué son los 'global objects' en JavaScript? Los 'global objects' son objetos que están
disponibles en todo el contexto de ejecución. En el navegador, el objeto global es window,
mientras que en Node.js es global. Estos objetos contienen propiedades y métodos que se
pueden utilizar en cualquier parte del código. Ejemplo:
48. ¿Qué son las 'promises.all' y 'promise.race'? Promise.all es un método que toma un
array de promesas y devuelve una nueva promesa que se resuelve cuando todas las
promesas se han resuelto. Si alguna de las promesas se rechaza, la promesa devuelta
también se rechaza. Promise.race devuelve una nueva promesa que se resuelve o se
rechaza tan pronto como una de las promesas en el array se resuelva o se rechace. Ejemplo:
49. ¿Qué es el 'console API' en JavaScript? La 'console API' permite a los desarrolladores
registrar información en la consola del navegador, lo que es útil para depurar y rastrear el flujo
del programa. Métodos comunes incluyen console.log(), console.error(),
console.warn() y console.table(). Ejemplo:
50. ¿Qué son los 'module loaders' en JavaScript? Los 'module loaders' son herramientas que
permiten cargar módulos de JavaScript de manera eficiente y ordenada, especialmente en
aplicaciones grandes. Existen diferentes tipos de 'module loaders', como CommonJS y AMD.
Con la introducción de ES6, se ha popularizado el uso de módulos nativos, que permiten
importar y exportar funciones y variables entre archivos. Ejemplo de uso de 'module loaders':