En JavaScript, los arrays y las funciones son estructuras fundamentales para organizar y ejecutar código.
Arrays en JavaScript
Un array es un tipo de dato que permite almacenar una colección de valores en un orden específico. Cada valor dentro del array se conoce como un elemento y tiene un índice numérico asociado, comenzando desde 0.
Declaración de Arrays
Puedes declarar arrays de varias maneras:
- Usando corchetes
\[\]:let nombresDeDias = ['Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado', 'Domingo']; - Usando el constructor
Array:let numeros = new Array(1, 2, 3, 4, 5);
Los arrays pueden contener elementos de cualquier tipo de dato y mantienen el orden de inserción.
Acceso y Longitud de Arrays
Para acceder a un elemento específico de un array, utilizas su índice:
array[indice]Para obtener la cantidad de elementos en un array, se usa la propiedad length:
array.length#### Ejemplo de Acceso y Longitud:
let diasSemana = ['Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado', 'Domingo'];
console.log(diasSemana[6]); // Imprime: 'Domingo'
console.log(diasSemana.length); // Imprime: 7
Operaciones Comunes con Arrays
Recorrido de Arrays (Iteración)
Se suele utilizar un bucle for para visitar cada elemento de un array.
Adición de Elementos
-
push(elemento1, elemento2, ...): Añade uno o más elementos al final del array y devuelve la nueva longitud del array. ```javascriptlet miArray = [10, 'Ana']; miArray.push(22, 'Juan'); console.log(miArray); // Salida: [10, 'Ana', 22, 'Juan']
-
unshift(elemento1, elemento2, ...): Añade uno o más elementos al principio del array y devuelve la nueva longitud. ```javascriptlet miArray = [10, 'Ana']; miArray.unshift(22, 'Juan'); console.log(miArray); // Salida: [22, 'Juan', 10, 'Ana']
Eliminación de Elementos
-
pop(): Elimina el último elemento del array y devuelve el elemento eliminado. ```javascriptlet miArray = [10, 'Ana']; let elementoEliminado = miArray.pop(); console.log(miArray); // Salida: [10] console.log(elementoEliminado); // Salida: 'Ana'
-
shift(): Elimina el primer elemento del array y devuelve el elemento eliminado. ```javascriptlet miArray = [10, 'Ana']; let elementoEliminado = miArray.shift(); console.log(miArray); // Salida: ['Ana'] console.log(elementoEliminado); // Salida: 10
-
splice(indiceInicio, numElementos): Elimina elementos a partir de un índice específico.indiceInicio: La posición desde donde comenzar a eliminar.numElementos: La cantidad de elementos a eliminar.- Si solo se proporciona
indiceInicio, se eliminarán todos los elementos desde esa posición hasta el final.
let miArray = [10, 'Ana', 22, 'Carlos']; miArray.splice(1, 2); // Elimina 2 elementos a partir del índice 1 console.log(miArray); // Salida: [10, 'Carlos']
Ordanación de Arrays
El método sort() ordena los elementos de un array. Por defecto, ordena los elementos como cadenas de texto. Para ordenaciones numéricas o personalizadas, se requiere una función de comparación.
Algoritmo de Ordenación de Burbuja (Bubble Sort)
Es un algoritmo de ordenación simple que recorre repetidamente la lista, compara elementos adyacentes y los intercambia si están en el orden incorrecto. Los elementos más pequeños "flotan" hacia el principio de la lista.
let numerosDesordenados = [5, 1, 4, 2, 8];
let n = numerosDesordenados.length;
for (let i = 0; i < n - 1; i++) {
for (let j = 0; j < n - i - 1; j++) {
// Compara elementos adyacentes
if (numerosDesordenados[j] > numerosDesordenados[j + 1]) {
// Intercambia los elementos si están en el orden incorrecto
let temp = numerosDesordenados[j];
numerosDesordenados[j] = numerosDesordenados[j + 1];
numerosDesordenados[j + 1] = temp;
}
}
}
console.log(numerosDesordenados); // Salida: [1, 2, 4, 5, 8]
Funciones en JavaScript
Una función es un bloque de código reutilizable diseñado para realizar una tarea específica. Permiten organizar el código, evitar la repetición y mejorar la legibilidad.
¿Por qué usar Funciones?
Las funciones encapsulna lógica que se puede ejecutar múltiples veces. Esto promueve la reutilización de código, similar a las funciones integradas como alert() o console.log().
Declaración de Funciones
La estructura básica de una función es:
function nombreDeFuncion(parametro1, parametro2, ...) {
// Cuerpo de la función: código a ejecutar
return valorDeRetorno; // Opcional: devuelve un valor
}
Las convenciones de nomenclatura para funciones suelen seguir el patrón de "pequeña joroba" (camelCase), comenzando con un verbo.
Uso de Funciones (Invocación)
Para ejecutar el código dentro de una función, se la llama o invoca:
nombreDeFuncion(argumento1, argumento2, ...);Si la función devuelve un valor, puedes almacenarlo en una variable:
let resultado = nombreDeFuncionConRetorno();Nota: El código dentro del cuerpo de la función solo se ejecuta cuando la función es llamada.
Parámetros y Argumentos
- Los parámetros son las variables listadas en la definición de la función.
- Los argumentos son los valores reales pasados a la función cuando se llama.
Si el número de argumentos no coincide con el número de parámetros:
- Los parámetros sin argumentos correspondientes reciben
undefined. - Los argumentos extra son ignorados (pero accesibles a través del objeto
argumentsdentro de la función).
El código después de una sentencia return no se ejecutará. Si una función no tiene una sentencia return explícita, devuelve undefined por defecto.
Ámbito (Scope)
El ámbito define la accesibilidad y la vida útil de las variables.
- Ámbito Global: Accesible desde cualquier parte del código (dentro de un script o archivo JS completo).
- Ámbito Local (o de Función): Accesible solo dentro de la función donde se declara.
Regla de Cercanía (Scope Chain): JavaScript busca las variables primero en el ámbito local. Si no las encuentra, busca en el ámbito exterior, y así sucesivamente hasta el ámbito global.
Advertencia: Asignar un valor a una variable no declarada dentro de una función la convierte en una variable global, lo cual generalmente se desaconseja.
Funciones Anónimas
Una función anónima es una función sin nombre. No se puede llamar directamente.
Se utilizan principalmente de dos maneras:
-
Expresiones de Función: Asignar una función anónima a una variable. ```javascript
let saludar = function(nombre) { console.log('Hola, ' + nombre); }; saludar('Mundo'); // Llama a la función a través de la variable
-
Funciones de Ejecución Inmediata (IIFE - Immediately Invoked Function Expression): Funciones que se definen y ejecutan al instante. Son útiles para crear ámbitos privados y evitar la contaminación del ámbito global. ```javascript
// Forma 1 (function(param1, param2) { console.log('Ejecución inmediata:', param1 + param2); })(5, 3); // Salida: Ejecución inmediata: 8
// Forma 2 (function() { let mensajePrivado = "Esto es privado."; console.log(mensajePrivado); }()); // console.log(mensajePrivado); // Error: mensajePrivado no está definido
**Nota:** Es importante añadir un punto y coma (`;`) después de cada IIFE si se van a usar varias seguidas.
Interrupción de Lógica (Short-circuiting)
Este concepto se aplica a los operadores lógicos && (AND) y || (OR). Se utiliza a menudo para asignar valores predeterminados a parámetros.
|| (OR): Si el operando izquierdo es "falsy" (false, 0, "", null, undefined, NaN), evalúa y devuelve el operando derecho. De lo contrario, devuelve el operando izquierdo.
&& (AND): Si el operando izquierdo es "truthy", evalúa y devuelve el operando derecho. De lo contrario, devuelve el operando izquierdo.
function calcularSuma(a, b) {
// Si 'a' no se proporciona o es falsy, se usará 0
a = a || 0;
// Si 'b' no se proporciona o es falsy, se usará 0
b = b || 0;
console.log(a + b);
}
calcularSuma(10, 5); // Salida: 15
calcularSuma(10); // Salida: 10 (porque b será 0)
calcularSuma(); // Salida: 0 (porque a y b serán 0)
function mostrarMensaje(mensaje) {
// Si mensaje es falsy, se usa el valor por defecto
let textoAMostrar = mensaje || "Mensaje por defecto";
console.log(textoAMostrar);
}
mostrarMensaje("Hola"); // Salida: Hola
mostrarMensaje(""); // Salida: Mensaje por defecto
function procesarDatos(datoA, datoB) {
// Si datoA es truthy, se evalúa y devuelve datoB
let resultado = datoA && datoB;
console.log("Resultado de AND:", resultado);
}
procesarDatos(true, "Éxito"); // Salida: Resultado de AND: Éxito
procesarDatos(false, "Fallo"); // Salida: Resultado de AND: false
El resultado de una operación && o || es el valor de la última expresión evaluada, lo que las hace útiles para asignaciones condicionales.