70 JavaScript Questions Flashcards

1
Q

¿Cuál es la diferencia entre undefined y null?

A

undefined es un tipo de valor automático que se asigna a las variables que no han sido inicializadas. null es un valor asignado que representa la ausencia de valor.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

¿Qué hace el operador &&?

A

El operador && es un operador lógico AND que devuelve true si ambos operandos son verdaderos, y false de lo contrario.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

¿Qué hace el operador ||?

A

El operador || es un operador lógico OR que devuelve true si al menos uno de los operandos es verdadero, y false si ambos son falsos.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

¿Usar el + o el operador unario plus es la forma más rápida de convertir una cadena a un número?

A

El operador unario + es una forma rápida y común de convertir cadenas a números, pero la rapidez puede variar según el motor de JavaScript. Number() es otra opción.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

¿Qué es el DOM?

A

El Document Object Model (DOM) es una interfaz de programación que representa y permite interactuar con documentos HTML y XML.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

¿Qué es la Propagación de Eventos?

A

Es el modo en el cual los eventos se propagan a través del DOM, iniciando desde el elemento más interno y expandiéndose hacia los elementos padres.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

¿Qué es la Burbuja de Eventos?

A

La burbuja de eventos es una fase de la propagación de eventos donde el evento se propaga desde el elemento más específico hasta el DOM.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

¿Qué es la Captura de Eventos?

A

La captura de eventos es la fase de propagación de eventos donde el evento va desde el DOM hacia el elemento más específico.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

¿Cuál es la diferencia entre event.preventDefault() y event.stopPropagation()?

A

event.preventDefault() evita la acción por defecto del evento, mientras que event.stopPropagation() detiene la propagación del evento en la cadena del DOM.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

¿Cómo saber si se utilizó el método event.preventDefault() en un elemento?

A

Puedes comprobar si event.defaultPrevented es true para saber si event.preventDefault() fue llamado en el evento.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

¿Por qué este código obj.someprop.x lanza un error?

A

Si obj.someprop es undefined o null, intentar acceder a x arrojará un TypeError porque no puedes acceder a propiedades de undefined o null.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

¿Qué es event.target?

A

event.target es la propiedad del evento que retorna el elemento que disparó el evento.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

¿Qué es event.currentTarget?

A

event.currentTarget es la propiedad que indica el elemento al cual el event handler ha sido adjuntado.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

¿Cuál es la diferencia entre == y ===?

A

== compara la igualdad después de la coerción (conversión de tipos), mientras que === compara la igualdad sin coerción, por tanto, los tipos deben ser iguales.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

¿Por qué devuelve false al comparar dos objetos similares en JavaScript?

A

En JavaScript, los objetos se comparan por referencia, no por valor. Dos objetos diferentes nunca son iguales, incluso si tienen las mismas propiedades.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

¿Qué hace el operador !?

A

El operador ! es el operador lógico NOT, que invierte el valor de verdad de su operando.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

¿Cómo evaluar múltiples expresiones en una línea?

A

Puedes evaluar múltiples expresiones en una línea utilizando el operador coma ,, el cual evalúa cada expresión de izquierda a derecha y devuelve el resultado de la última expresión.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

¿Qué es Hoisting?

A

Hoisting es el comportamiento por defecto de JavaScript de mover declaraciones de variables o funciones al inicio de su contexto actual, ya sea el script o la función.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

¿Qué es el Ámbito (Scope)?

A

El ámbito es el contexto en el cual los valores y las expresiones son “visibles” o pueden ser referenciados. Si una variable o expresión no está en el ámbito actual, no podrá ser usada.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

¿Qué son las Clousures?

A

Una clausura o closure es una función que retiene acceso a su ámbito léxico, incluso cuando se ejecuta fuera de su ámbito original.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

¿Cuáles son los valores falsos en JavaScript?

A

Los valores falsos en JavaScript son: false, 0, -0, “” (cadena vacía), null, undefined, NaN.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

¿Cómo verificar si un valor es falso?

A

Puedes verificar si un valor es falso utilizando un condicional. Si !valor devuelve true, entonces el valor es falsy.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

¿Qué hace “use strict”?

A

“use strict” es una directiva que establece que el código debe ejecutarse en un “modo estricto”, el cual es un subconjunto más estricto de JavaScript, donde ciertos errores son más fácilmente detectados.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

¿Cuál es el valor de ‘this’ en JavaScript?

A

El valor de this en JavaScript depende del contexto en el que se utiliza. Puede referirse al objeto global, al objeto que contiene la función llamada, o a un objeto especificado al usar métodos como apply, call o bind.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

¿Cuál es el prototipo de un objeto?

A

El prototipo de un objeto es otro objeto del cual el objeto original hereda métodos y propiedades

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

¿Qué es una IIFE y para qué se utiliza?

A

Una IIFE (Immediately Invoked Function Expression) es una función que se ejecuta inmediatamente después de su definición. Se utiliza para crear un ámbito privado y evitar contaminar el ámbito global.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

¿Cuál es el uso de Function.prototype.apply?

A

Function.prototype.apply se utiliza para invocar una función con un dado this valor y argumentos proporcionados como un array (o un objeto parecido a un array).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

¿Cuál es el uso de Function.prototype.call?

A

Function.prototype.call es similar a apply, pero en lugar de tomar un array de argumentos, toma argumentos individuales después del primer argumento this.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
29
Q

¿Cuál es la diferencia entre Function.prototype.apply y Function.prototype.call?

A

La diferencia principal entre apply y call es que apply toma un array de argumentos, mientras que call toma argumentos individuales.

30
Q

¿Cuál es el uso de Function.prototype.bind?

A

Function.prototype.bind crea una nueva función que, cuando es llamada, tiene su this keyword establecido en el valor proporcionado, con una secuencia dada de argumentos precediendo a cualquier otro que sea proporcionado al invocar la función.

31
Q

¿Qué es la Programación Funcional y cuáles son las características de JavaScript que la hacen candidata como lenguaje funcional?

A

La programación funcional es un paradigma de programación donde las funciones son tratadas como ciudadanos de primera clase. JavaScript es considerado un lenguaje funcional porque soporta funciones de primera clase, clausuras, y tiene funciones de alto orden como map, filter, reduce.

32
Q

¿Cuáles son las Funciones de Alto Orden?

A

Las funciones de alto orden son funciones que pueden tomar otras funciones como argumentos o que devuelven funciones como sus resultados.

33
Q

¿Por qué se dice que las funciones son Objetos de Primera Clase en JavaScript?

A

Las funciones son consideradas de primera clase en JavaScript porque pueden ser asignadas a variables, pasadas como argumentos a otras funciones, y retornadas desde otras funciones.

34
Q

Implementa el método Array.prototype.map manualmente.

A

Array.prototype.customMap = function(callback) {
let arr = [];
for (let i = 0; i < this.length; i++) {
arr.push(callback(this[i], i, this));
}
return arr;
};

35
Q

Implementa el método Array.prototype.filter manualmente.

A

Array.prototype.customFilter = function(callback) {
let arr = [];
for (let i = 0; i < this.length; i++) {
if (callback(this[i], i, this)) {
arr.push(this[i]);
}
}
return arr;
};

36
Q

Implementa el método Array.prototype.reduce manualmente.

A

Array.prototype.customReduce = function(callback, initialValue) {
let accumulator = initialValue === undefined ? undefined : initialValue;
for (let i = 0; i < this.length; i++) {
if (accumulator !== undefined) {
accumulator = callback.call(undefined, accumulator, this[i], i, this);
} else {
accumulator = this[i];
}
}
return accumulator;
};

37
Q

¿Qué es el objeto arguments?

A

El objeto arguments es un objeto parecido a un array accesible dentro de las funciones que contiene los argumentos pasados a la función.

38
Q

¿Cómo crear un objeto sin un prototipo?

A

Puedes crear un objeto sin un prototipo utilizando Object.create(null).

39
Q

¿Por qué b en este código se convierte en una variable global cuando llamas a esta función?

A

Sin ver el código exacto, es probable que b se convierta en global si se asigna sin declararla previamente con var, let o const dentro de una función.

40
Q

¿Qué es ECMAScript?

A

ECMAScript es la especificación de lenguaje estandarizada en la cual se basan lenguajes como JavaScript.

41
Q

¿Cuáles son las nuevas características de ES6 o ECMAScript 2015?

A

Algunas nuevas características de ES6 incluyen let/const, clases, módulos, arrow functions, template literals, default parameters, destructuring, rest/spread operator, y promises.

42
Q

¿Cuál es la diferencia entre var, let y const?

A

var tiene un ámbito de función, let y const tienen un ámbito de bloque. let permite reasignar variables, mientras que const es para declarar variables constantes que no pueden ser reasignadas.

43
Q

¿Qué son las funciones flecha?

A

Las funciones flecha son una sintaxis más corta para las funciones y no tienen su propio this, arguments, super o new.target.

44
Q

¿Qué son las Clases?

A

Las clases en JavaScript son una sintaxis azucarada para la herencia prototípica, proporcionando una forma más clara y simple de crear objetos y lidiar con la herencia.

45
Q

¿Qué son los Literales de Plantilla?

A

Los literales de plantilla son cadenas que permiten expresiones incrustadas y pueden utilizar una sintaxis de “interpolación” con backticks (`).

46
Q

¿Qué es la Desestructuración de Objetos?

A

La desestructuración de objetos es una sintaxis que permite desempacar valores de arrays o propiedades de objetos en variables distintas.

47
Q

¿Qué son los Módulos ES6?

A

Los módulos ES6 son una característica que permite estructurar y organizar el código JavaScript en módulos reutilizables, importándolos o exportándolos.

48
Q

¿Qué es el objeto Set y cómo funciona?

A

Un objeto Set es una colección de valores únicos; es decir, un valor solo puede ocurrir una vez en un Set.

49
Q

¿Qué es una función de callback?

A

Una función de callback es una función que se pasa como argumento a otra función y que se invoca después de que se completa una operación o acción.

50
Q

¿Qué son las Promesas?

A

Las promesas son objetos que representan la eventual finalización o fracaso de una operación asíncrona, facilitando el manejo de operaciones asíncronas.

51
Q

¿Qué es async/await y cómo funciona?

A

async/await es una sintaxis que simplifica el trabajo con promesas de manera que puedas escribir código asíncrono que parezca síncrono.

52
Q

¿Cuál es la diferencia entre operador Spread y Resto?

A

El operador Spread descompone un array en elementos individuales, mientras que el operador Resto combina múltiples elementos en un array.

53
Q

¿Qué son los Parámetros por Defecto?

A

Los parámetros por defecto son valores que se asignan a los parámetros de la función en caso de que no se pase ningún valor o se pase undefined.

54
Q

¿Qué son los Objetos Envoltorio?

A

Los objetos envoltorio o wrapper objects en JavaScript son objetos que envuelven tipos de datos primitivos y les permiten comportarse como objetos.

55
Q

¿Cuál es la diferencia entre Coerción Implícita y Explícita?

A

La coerción implícita ocurre cuando JavaScript convierte automáticamente un tipo de dato a otro, mientras que la coerción explícita es cuando el programador transforma conscientemente un tipo de dato en otro.

56
Q

¿Qué es NaN y cómo verificar si un valor es NaN?

A

NaN significa “No es un número”. Puedes verificar si un valor es NaN usando la función isNaN()

57
Q

¿Cómo verificar si un valor es un Array?

A

Puedes usar Array.isArray() para verificar si un valor es un array.

58
Q

¿Cómo verificar si un número es par sin usar el operador % o módulo?

A

Puedes verificar si un número es par convirtiéndolo en un número binario y comprobando si el último dígito es 0.

59
Q

¿Cómo verificar si una propiedad existe en un objeto?

A

Puedes usar obj.hasOwnProperty(‘prop’) o ‘prop’ in obj para verificar si una propiedad existe en un objeto.

60
Q

¿Qué es AJAX?

A

AJAX (Asynchronous JavaScript and XML) es una técnica para crear aplicaciones web interactivas y asincrónicas que pueden enviar y recibir datos del servidor sin recargar la página.

61
Q

¿Cuáles son las formas de hacer objetos en JavaScript?

A

Puedes crear objetos usando literales de objeto, la función constructora new Object(), usando una función constructora personalizada, o Object.create().

62
Q

¿Cuál es la diferencia entre Object.seal y Object.freeze?

A

Object.seal permite cambiar las propiedades existentes de un objeto, pero no agregar ni eliminar propiedades. Object.freeze hace que un objeto sea inmutable, no permitiendo cambios en las propiedades.

63
Q

¿Cuál es la diferencia entre el operador in y el método hasOwnProperty en objetos?

A

in verifica si una propiedad existe en la cadena de prototipos del objeto, mientras que hasOwnProperty verifica si una propiedad existe directamente en el objeto, no en su prototipo.

64
Q

¿Cuáles son las formas de manejar el código asincrónico en JavaScript?

A

Las formas de manejar el código asincrónico en JavaScript incluyen callbacks, promesas, y async/await.

65
Q

¿Cuál es la diferencia entre una expresión de función y una declaración de función?

A

Una declaración de función define una función y la hoistea, mientras que una expresión de función resulta en una función que puede ser almacenada en una variable y no es hoisteada.

66
Q

¿De cuántas maneras se puede invocar una función?

A

Una función se puede invocar como una función normal, como un método de un objeto, como un constructor con new, y con apply o call.

67
Q

¿Qué es la memoización y cuál es su uso?

A

La memoización es una técnica de optimización que consiste en almacenar los resultados de operaciones costosas y reutilizar esos resultados cuando se repiten las mismas entradas.

68
Q

Implementa una función de ayuda para la memoización.

A

function memoize(fn) {
const cache = {};
return function(…args) {
const key = JSON.stringify(args);
if (!cache[key]) {
cache[key] = fn.apply(this, args);
}
return cache[key];
};
}

69
Q

¿Por qué typeof null devuelve ‘object’? ¿Cómo verificar si un valor es null?

A

typeof null devuelve ‘object’ debido a un error en las primeras versiones de JavaScript que nunca se corrigió por razones de compatibilidad. Para verificar si un valor es null, puedes usar una comparación estricta: valor === null.

70
Q

¿Qué hace la palabra clave new?

A

La palabra clave new se utiliza para crear una instancia de un objeto que tiene una función constructora, asignando this al nuevo objeto y retornando este objeto si la función no devuelve su propio objeto alternativo.