Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Una función recursiva en JavaScript es una función que se llama a sí misma de manera repetida hasta que se alcanza
una condición de salida o límite. Es decir, la función se llama a sí misma para resolver un problema de forma iterativa.
Aquí hay un ejemplo de una función recursiva en JavaScript que calcula el factorial de un número:
function factorial(n) {
if (n <= 1) {
return 1;
} else {
return n * factorial(n - 1);
}
}
En JavaScript, una clausura o closure se produce cuando una función interna tiene acceso a variables de su función
externa, incluso después de que la función externa haya finalizado su ejecución. Esto significa que la función interna
puede seguir accediendo y manipulando esas variables externas, incluso si la función externa ya no está en la pila de
llamadas. Las clausuras son una característica poderosa de JavaScript que permite crear funciones más flexibles y
reutilizables.
function saludar(nombre) {
var mensaje = 'Hola ' + nombre + '!';
function mostrarMensaje() {
console.log(mensaje);
}
return mostrarMensaje;
}
En este ejemplo, la función saludar() retorna otra función llamada mostrarMensaje(), que tiene acceso a la variable
mensaje de la función saludar(). Cuando se llama a saludar(), se crea una clausura que permite que la función
interna mostrarMensaje() tenga acceso a la variable mensaje incluso después de que la función saludar() haya
finalizado su ejecución. En este caso, la función saludar() retorna la función mostrarMensaje(), que luego se asigna a
la variable saludarJuan. Luego, cuando se llama a saludarJuan(), se ejecuta la función interna mostrarMensaje(), que
tiene acceso a la variable mensaje y muestra el mensaje "Hola Juan!" en la consola.
CLAUSURAS EN JAVASCRIPT
En JavaScript, una clausura o closure se produce cuando una función interna tiene acceso a variables de su función
externa, incluso después de que la función externa haya finalizado su ejecución. Esto significa que la función interna
puede seguir accediendo y manipulando esas variables externas, incluso si la función externa ya no está en la pila de
llamadas. Las clausuras son una característica poderosa de JavaScript que permite crear funciones más flexibles y
reutilizables.
En este ejemplo, la función saludar() retorna otra función llamada mostrarMensaje(), que tiene acceso a la variable
mensaje de la función saludar(). Cuando se llama a saludar(), se crea una clausura que permite que la función
interna mostrarMensaje() tenga acceso a la variable mensaje incluso después de que la función saludar() haya
finalizado su ejecución. En este caso, la función saludar() retorna la función mostrarMensaje(), que luego se asigna a
la variable saludarJuan. Luego, cuando se llama a saludarJuan(), se ejecuta la función interna mostrarMensaje(), que
tiene acceso a la variable mensaje y muestra el mensaje "Hola Juan!" en la consola.
En JavaScript, el parámetro rest permite a una función aceptar un número variable de argumentos como un array.
Para utilizar el parámetro rest, se utiliza el operador de propagación ... antes del nombre del parámetro. De esta
manera, cualquier número de argumentos que se le pasen a la función se agruparán en un array.
function sumar(...numeros) {
let total = 0;
for (let numero of numeros) {
total += numero;
}
return total;
}
console.log(sumar(1, 2, 3, 4, 5)); // output: 15
console.log(sumar(10, 20)); // output: 30
console.log(sumar(2, 4, 6, 8)); // output: 20
En el ejemplo anterior, la función sumar utiliza el parámetro rest ...numeros para aceptar cualquier número de
argumentos. Los argumentos se agrupan en un array, que se recorre con un bucle for y se suma cada elemento. REST
DEBE SER EL ULTIMO PARAMETRO
DESCTRUCTURACION EN JAVASCRIPT
La destructuración es una forma de extraer valores de un objeto o de un array y asignarlos a variables en una sola
línea de código. Es una forma conveniente y legible de trabajar con objetos y arrays en JavaScript.
console.log(nombre); // 'Juan'
console.log(apellido); // 'Pérez'
console.log(edad); // 30
En este ejemplo, la sintaxis { nombre, apellido, edad } = objeto extrae los valores correspondientes del objeto objeto
y los asigna a las variables nombre, apellido y edad respectivamente.
console.log(primera); // 'manzana'
console.log(segunda); // 'banana'
console.log(tercera); // 'naranja'
en este ejemplo, la sintaxis [primera, segunda, tercera] = array extrae los valores correspondientes del array array y
los asigna a las variables primera, segunda y tercera respectivamente.
OPERADORES TERNARIOS
El operador ternario en JavaScript es una forma abreviada de una estructura de control if/else. Su sintaxis es
la siguiente:
En este ejemplo, la condicion es edad >= 18. Si es verdadera, entonces se devuelve el valorSiVerdadero que es
"Eres mayor de edad" , de lo contrario se devuelve el valorSiFalso que es "Eres menor de edad" . En este caso,
la edad es mayor o igual a 18, por lo que se devuelve "Eres mayor de edad" .
let x = 5;
let resultado = (x > 10) ? "Mayor a 10" : (x > 5) ? "Mayor a 5" : "Menor o igual a 5";
console.log(resultado); // "Menor o igual a 5"
En este ejemplo, hay tres condiciones. Si la primera condición x > 10 es verdadera, el valor de resultado será
"Mayor a 10". De lo contrario, se evaluará la segunda condición x > 5. Si la segunda condición es verdadera,
el valor de resultado será "Mayor a 5". De lo contrario, el valor de resultado será "Menor o igual a 5".
let x = 3;
let resultado = (x > 10) ? "Mayor a 10" : (x > 5) ? "Mayor a 5" : (x > 2) ? "Mayor a 2" : "Menor o igual a 2";
console.log(resultado); // "Mayor a 2"
cuatro condiciones
let x = 3;
let resultado = (x > 10) ? "Mayor a 10" : (x > 5) ? "Mayor a 5" : (x > 2) ? "Mayor a 2" : "Menor o igual a 2";
console.log(resultado); // "Mayor a 2"
En este ejemplo, hay cuatro condiciones. Si la primera condición x > 10 es verdadera, el valor de resultado
será "Mayor a 10". De lo contrario, se evaluará la segunda condición x > 5. Si la segunda condición es
verdadera, el valor de resultado será "Mayor a 5". De lo contrario, se evaluará la tercera condición x > 2. Si la
tercera condición es verdadera, el valor de resultado será "Mayor a 2". De lo contrario, el valor de resultado
será "Menor o igual a 2".
OPERADOR SPREAD
El operador spread en JavaScript es un operador que se utiliza para descomponer los elementos de un
objeto iterable, como un array, en elementos individuales. Este operador se representa con tres puntos
consecutivos ( ... ) y se utiliza en diferentes contextos para realizar diversas tareas, como la copia de arrays,
la combinación de arrays, la definición de parámetros de función y la creación de objetos.
function sumNumbers(x, y, z) {
return x + y + z;
}
const numbers = [1, 2, 3];
console.log(sumNumbers(...numbers)); // 6
4. Creación de objetos:
const person = { name: 'John', age: 30 };
const address = { city: 'New York', country: 'USA' };
const personWithAddress = { ...person, ...address };
console.log(personWithAddress); // { name: 'John', age: 30, city: 'New York', country: 'USA' }
En resumen, el operador spread es una herramienta útil para manipular datos en JavaScript y se puede
utilizar en diferentes contextos para descomponer los elementos de un objeto iterable en elementos
individuales.
En este caso, el operador spread se utiliza para copiar los atributos del objeto obj1 en el nuevo objeto obj2,
de forma que obj2 contenga tanto los atributos de obj1 como los suyos propios.
¡Claro! A continuación te doy una breve explicación y ejemplos de cada uno de los objetos nativos de JavaScript que
mencionaste:
Object: es la base de todo objeto en JavaScript. Es el objeto principal y es utilizado para crear objetos
personalizados. Ejemplo:
Boolean: es un objeto que representa un valor booleano, es decir, verdadero o falso. Ejemplo:
let esMayor = true;
Map: es un objeto que almacena elementos en pares clave-valor y permite usar cualquier tipo de valor como
clave. Ejemplo:
let mapa = new Map(); mapa.set('nombre', 'Juan'); mapa.set('apellido', 'Pérez');
Math: es un objeto que proporciona métodos matemáticos estáticos. Ejemplo:
let numeroAleatorio = Math.random();
Number: es un objeto que representa valores numéricos. Ejemplo:
let numero = 42;
Promise: es un objeto que representa la finalización (o falla) de una operación asíncrona y su valor resultante.
Ejemplo:
let promesa = new Promise(function(resolve, reject) { setTimeout(function() { resolve('¡Éxito!'); }, 2000); });
Proxy: es un objeto que permite crear un objeto con un comportamiento personalizado. Ejemplo:
let objetoOriginal = {}; let objetoProxy = new Proxy(objetoOriginal, { get: function(target, property) { console.log('Se
accedió a la propiedad ' + property); return target[property]; } });
RegExp: es un objeto que representa una expresión regular. Ejemplo:
let expresionRegular = /Hola, Mundo!/;
Set: es un objeto que permite almacenar valores únicos de cualquier tipo, incluso valores primitivos y objetos
de referencia. Ejemplo:
let set = new Set([1, 2, 3, 4, 5]);
String: es un objeto que representa una cadena de texto. Ejemplo:
let mensaje = 'Hola, Mundo!';
Symbol: es un objeto que representa un identificador único. Ejemplo:
let simbolo = Symbol('descripcion');
WeakMap: es un objeto que permite almacenar pares clave-valor débiles, donde las claves solo se mantienen
mientras existan referencias al objeto. Ejemplo:
let objeto1
……………………..
1. getDate(): Devuelve el día del mes (de 1 a 31) para la fecha especificada.
const today = new Date(); const dayOfMonth = today.getDate(); console.log(dayOfMonth); // Output: 28
2. getDay(): Devuelve el día de la semana (de 0 a 6) para la fecha especificada.
const today = new Date(); const dayOfWeek = today.getDay(); console.log(dayOfWeek); //
Output: 4
3. getFullYear(): Devuelve el año (como un número de cuatro dígitos) para la fecha especificada.
const today = new Date(); const year = today.getFullYear(); console.log(year); // Output: 2023
4. getHours(): Devuelve las horas (de 0 a 23) para la fecha especificada.
const today = new Date(); const hours = today.getHours(); console.log(hours); // Output: 10
5. getMinutes(): Devuelve los minutos (de 0 a 59) para la fecha especificada.
const today = new Date(); const minutes = today.getMinutes(); console.log(minutes); // Output: 45
6. getSeconds(): Devuelve los segundos (de 0 a 59) para la fecha especificada.
const today = new Date(); const seconds = today.getSeconds(); console.log(seconds); // Output: 30
7. getTime(): Devuelve el número de milisegundos transcurridos desde el 1 de enero de 1970 hasta la fecha
especificada.
const today = new Date(); const timeInMs = today.getTime(); console.log(timeInMs); // Output: 1651218257102
8. toLocaleDateString(): Devuelve la fecha como una cadena en formato localizado de fecha.
const today = new Date(); const dateStr = today.toLocaleDateString(); console.log(dateStr); // Output: "4/28/2023"
(en formato MM/DD/YYYY)
9. toLocaleTimeString(): Devuelve la hora como una cadena en formato localizado de hora.
const today = new Date(); const timeStr = today.toLocaleTimeString(); console.log(timeStr); // Output: "10:50:22 AM"
(en formato de 12 horas)
10. toString(): Devuelve la fecha como una cadena en formato completo de fecha y hora.
const today = new Date(); const dateTimeStr = today.toString(); console.log(dateTimeStr); // Output: "Fri Apr 28 2023
10:54:30 GMT-0700 (Pacific Daylight Time)"
Ejemplos
For each
const miArray = [1, 2, 3, 4, 5];
miArray.forEach(function(elemento) {
console.log(elemento);
});
const miArray = [1, 2, 3, 4, 5];
miArray.forEach(elemento => {
console.log(elemento);
});
const miObjeto = {
valor: 2
};
const miArray = [1, 2, 3, 4, 5];
miArray.forEach(function(elemento) {
console.log(elemento * this.valor);
}, miObjeto);
MAP
El método map() en JavaScript devuelve un nuevo array con los resultados de aplicar una función a cada
elemento del array original. Aquí tienes un ejemplo:
FILTER:
const libros = [
{titulo: "Cien años de soledad", autor: "Gabriel García Márquez", publicacion: 1967},
{titulo: "El amor en los tiempos del cólera", autor: "Gabriel García Márquez", publicacion: 1985},
{titulo: "La ciudad y los perros", autor: "Mario Vargas Llosa", publicacion: 1963},
{titulo: "La casa verde", autor: "Mario Vargas Llosa", publicacion: 1966},
{titulo: "Rayuela", autor: "Julio Cortázar", publicacion: 1963},
];
console.log(librosGarciaMarquez);
En este ejemplo, el método filter() recorre cada objeto del arreglo libros y verifica si el valor de la propiedad
autor es igual a "Gabriel García Márquez". Si es así, ese objeto se añade al nuevo arreglo
librosGarciaMarquez que se genera como resultado de la operación. Finalmente, se imprime el nuevo
arreglo en la consola.
[
{titulo: "Cien años de soledad", autor: "Gabriel García Márquez", publicacion: 1967},
{titulo: "El amor en los tiempos del cólera", autor: "Gabriel García Márquez", publicacion: 1985},
]
REDUCE:
En este ejemplo, el método reduce() recibe una función que se ejecuta por cada elemento del array. Esta
función recibe dos parámetros: un acumulador y el elemento actual del array. En cada iteración, se suma el
elemento actual al acumulador y se retorna el resultado. Al finalizar la ejecución de la función reduce() , el
resultado final es la suma de todos los elementos del array.
PROMISE:
function loadImage(url) {
return new Promise((resolve, reject) => {
let img = new Image();
img.onload = () => resolve(img);
img.onerror = () => reject(new Error(`No se pudo cargar la imagen desde ${url}`));
img.src = url;
});
}
loadImage('https://example.com/image.jpg')
.then((img) => {
// Agregar la imagen al documento
document.body.appendChild(img);
})
.catch((error) => {
// Manejar el error
console.error(error);
});
En este ejemplo, se define una función loadImage que acepta una URL como parámetro y devuelve
una instancia de Promise. Dentro de la promesa, se crea un objeto de imagen y se asignan dos
manejadores de eventos onload y onerror . Si la imagen se carga correctamente, la promesa se
resuelve con el objeto de imagen. Si ocurre un error al cargar la imagen, la promesa se rechaza con
un objeto de error.
Luego, se llama a la función loadImage con una URL de imagen como parámetro. Se utiliza el
método then para agregar la imagen al documento si la promesa se resuelve correctamente. Si
ocurre un error, se maneja el error utilizando el método catch.
async/await:
Supongamos que tenemos una función getData() que realiza una solicitud a una API y devuelve una promesa
con los datos obtenidos. Podemos usar async/await para esperar a que se resuelva la promesa y manejar la
respuesta de manera asíncrona.
async function getDataAsync() {
try {
const response = await getData();
console.log(response);
} catch (error) {
console.error(error);
}
}
getDataAsync();
En este ejemplo, la función getDataAsync() se declara como async para poder usar la palabra clave await
dentro de ella. Luego, se llama a la función getData() usando await para esperar la resolución de la promesa
y obtener los datos de respuesta. La respuesta se almacena en la constante response y se muestra en la
consola. Si se produce algún error en la promesa, se maneja en el bloque catch. Finalmente, se llama a la
función getDataAsync() para iniciar el proceso asincrónico.
encodeURIComponent() y decodeURIComponent():
La función encodeURIComponent() se utiliza para codificar componentes de una URL y hacer que sean
válidos para ser utilizados en una solicitud HTTP. Por otro lado, decodeURIComponent() se utiliza para
decodificar un componente de una URL codificado previamente con encodeURIComponent() . Aquí te
presento un ejemplo de cómo utilizar ambas funciones:
En este ejemplo, primero creamos una URL que contiene un parámetro q con el valor "perros y
gatos". Luego, utilizamos encodeURIComponent() para codificar ese valor, lo que resulta en "perros
%20y%20gatos" . Después, creamos una nueva URL con el valor codificado y la imprimimos en la
consola.
document.getElementById():
<body>
<div id="mi-elemento">Este es mi elemento</div>
<script>
// Acceder al elemento con id "mi-elemento"
const elemento = document.getElementById("mi-elemento");
Podemos obtener todos los elementos p en este documento y mostrar su contenido en la consola del
navegador de la siguiente manera:
for (let i = 0; i < parrafos.length; i++) {
console.log(parrafos[i].textContent);
}
const parrafos = document.getElementsByTagName('p');
Claro, aquí te muestro un ejemplo de cómo utilizar document.querySelectorAll() para seleccionar todos los
elementos p dentro de un div y cambiarles el color de fondo:
<div id="mi-div">
<p>Primer párrafo</p>
<p>Segundo párrafo</p>
<p>Tercer párrafo</p>
</div>
const parrafos = document.querySelectorAll("#mi-div p");
parrafos.forEach(parrafo => {
parrafo.style.backgroundColor = "yellow";
});
En este ejemplo, primero se utiliza document.querySelectorAll("#mi-div p") para seleccionar todos los
elementos p dentro del div con el id mi-div . Luego, se utiliza forEach() para iterar sobre los elementos
seleccionados y cambiarles el color de fondo a amarillo.
array.slice():
El método slice() en JavaScript devuelve una copia de una porción de un array original en un nuevo
array. Toma dos parámetros opcionales: el índice de inicio y el índice de finalización (no incluido).
Si no se proporcionan, se devuelve una copia del array completo.
En este ejemplo, slice() toma el índice de inicio 1 y el índice de finalización 3, lo que significa que devuelve
una copia del array que incluye los elementos con índices 1 y 2 (pero no el elemento con índice 3). Esta
porción se copia en un nuevo array, que se asigna a newArray . Luego, console.log() se utiliza para imprimir el
nuevo array [2, 3].
array.splice():
Para eliminar el elemento "conejo" del array, podemos utilizar el método splice() de la siguiente manera:
miArray.splice(2, 1);
console.log(miArray); // ["perro", "gato", "loro", "pez"]
La primera posición del método splice() indica el índice donde empezar la modificación, en este
caso, 2. La segunda posición indica cuántos elementos deben ser eliminados, en este caso, 1.
También podemos utilizar el método splice() para agregar elementos al array en cualquier posición.
Por ejemplo, para agregar el elemento "conejo" de nuevo al array, pero en la tercera posición,
podemos hacer lo siguiente:
miArray.splice(2, 0, "conejo");
console.log(miArray); // ["perro", "gato", "conejo", "loro", "pez"]
array.sort():
La primera posición del método splice() indica el índice donde empezar la modificación, en este caso, 2. La
segunda posición indica cuántos elementos deben ser eliminados, en este caso, 0. La tercera y siguientes
posiciones indican los elementos que deben ser agregados al array, en este caso, "conejo".
El método sort() ordena los elementos de un arreglo alfabética o numéricamente, y modifica el arreglo
original. Aquí hay un ejemplo de cómo se puede usar sort() para ordenar un arreglo de números de menor
a mayor:
const numeros = [5, 2, 7, 1, 8];
numeros.sort((a, b) => a - b);
console.log(numeros); // Output: [1, 2, 5, 7, 8]
En este ejemplo, sort() se llama en el arreglo numeros y se le pasa una función de comparación (a, b) => a - b.
La función de comparación toma dos argumentos a y b, y devuelve un número negativo si a es menor que
b, cero si son iguales, o un número positivo si a es mayor que b. La función de comparación se usa para
ordenar los elementos del arreglo en orden ascendente.
const person = {
name: 'Juan',
age: 25,
city: 'Madrid'
};
const keys = Object.keys(person);
console.log(keys); // ["name", "age", "city"]
En este ejemplo, Object.keys() se utiliza para obtener un array con las propiedades del objeto person. Luego,
el array resultante se almacena en la variable keys. Finalmente, el array se muestra por consola.
Object.assign():
Object.assign() en JavaScript:
Supongamos que tenemos dos objetos obj1 y obj2, y queremos combinarlos en un nuevo objeto
obj3:
const obj1 = { a: 1 };
const obj2 = { b: 2, c: 3 };
const obj3 = Object.assign({}, obj1, obj2);
console.log(obj3); // { a: 1, b: 2, c: 3 }
const obj1 = { a: 1 };
const obj2 = { b: 2, c: 3 };
const obj3 = Object.assign({}, obj1, obj2);
console.log(obj3); // { a: 1, b: 2, c: 3 }
En este ejemplo, utilizamos Object.assign() para combinar los objetos obj1 y obj2 en un nuevo objeto obj3. El
primer parámetro de Object.assign() es el objeto de destino al que se asignarán los valores de los objetos de
origen, en este caso hemos pasado un objeto vacío {}. Luego, pasamos los objetos obj1 y obj2 como
argumentos adicionales, lo que significa que sus propiedades se copiarán en el objeto de destino en el
orden en que se pasaron como argumentos. Al imprimir obj3 en la consola, obtenemos el objeto
Con el objeto persona creado, podemos acceder a sus propiedades de la siguiente manera:
console.log(persona.nombre); // "Juan"
console.log(persona.edad); // 25
console.log(persona.sexo); // "Masculino"
string.slice():
string.substring():
La función substring() es una función nativa de JavaScript que devuelve una parte de una cadena de
texto, a partir del índice especificado.
Aquí hay un ejemplo de cómo se puede usar substring() para extraer una subcadena de una cadena:
En este ejemplo, la variable str contiene la cadena "Hola mundo" . Luego, la función substring() se usa para
extraer los primeros cuatro caracteres de la cadena (desde el índice 0 hasta el índice 3), que es la subcadena
"Hola". La subcadena se almacena en la variable subcadena y luego se imprime en la consola usando
console.log() .
date.toLocaleDateString():
switch...case:
let opcion = 2;
switch(opcion) {
case 1:
console.log("La opción seleccionada es la 1");
break;
case 2:
console.log("La opción seleccionada es la 2");
break;
case 3:
console.log("La opción seleccionada es la 3");
break;
default:
console.log("La opción seleccionada no es válida");
break;
}
En este ejemplo, la variable opcion tiene el valor de 2. Al utilizar switch(opcion) , se evalúan todos los case
hasta encontrar uno que sea igual al valor de opcion. En este caso, el case 2 es el que coincide y se ejecuta su
bloque de código, que imprime en consola "La opción seleccionada es la 2". El break se utiliza para salir del
switch y evitar que se evalúen los demás case. Si ninguno de los case coincide con el valor de la variable, se
ejecuta el bloque de código del default.
ASYNC/AWAIT
Supongamos que queremos hacer una llamada a una API y recuperar algunos datos. Podemos encapsular
esa llamada en una función que devuelva una Promise, de esta forma:
function getData() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve([
{ id: 1, name: 'John' },
{ id: 2, name: 'Mary' },
{ id: 3, name: 'Adam' }
]);
}, 2000);
});
}
En este ejemplo, la función getData devuelve una Promise que resuelve después de dos segundos,
devolviendo un array de objetos. Ahora, podemos llamar a esta función desde otra función que utilice
async/await para esperar a que la Promise se resuelva antes de continuar:
En este ejemplo, la función fetchAndDisplayData utiliza la palabra clave await para esperar a que la
Promise devuelta por getData se resuelva antes de continuar. Una vez que se resuelve la Promise, la
variable data contiene el resultado, que podemos utilizar en el resto de la función.
Espero que esto te ayude a entender cómo utilizar Promises con async/await.