preloader

Especiales JavaScript

En este capítulo, resumimos las características fundamentales de JavaScript que hemos explorado hasta ahora, destacando los detalles relevantes.

Estructura del Código

Las instrucciones en JavaScript se separan con punto y coma:

				
					console.log('Hola'); 
console.log('Mundo');

				
			

Normalmente, un salto de línea también actúa como un separador:

				
					console.log('Hola')
console.log('Mundo')

				
			

Este fenómeno se conoce como «inserción automática de punto y coma». Aunque útil, a veces puede llevar a errores, por ejemplo:

				
					console.log("Después de este mensaje, habrá un error.")

[1, 2].forEach(console.log)

				
			

function f() {
// No se necesita punto y coma después de una declaración de función
}

for(;;) {
// No se necesita punto y coma después del bucle
}

				
					function f() {
  // No se necesita punto y coma después de una declaración de función
}

for(;;) {
  // No se necesita punto y coma después del bucle
}

				
			

Incluso si se coloca un punto y coma «extra» en algún lugar, JavaScript lo ignora sin generar un error.

Más detalles en: Estructura de Código.

Modo Estricto

Para aprovechar todas las características modernas de JavaScript, se recomienda iniciar los scripts con "use strict":

				
					'use strict';

...

				
			

Esta directiva debe estar al principio de un script o al inicio de una función.

Sin la directiva "use strict", JavaScript sigue funcionando, pero algunas características pueden comportarse de manera menos predecible según estándares anteriores.

Algunas características modernas, como las clases (que exploraremos más adelante), activan implícitamente el modo estricto.

Más en: Modo Moderno, "use strict".

Variables

En JavaScript, las variables se declaran usando:

  • let
  • const (constante, no modificable)
  • var (forma más antigua, abordaremos esto más adelante)

Los nombres de las variables pueden incluir letras y dígitos, pero no pueden comenzar con un dígito. Los caracteres $ y _ son permitidos, así como letras y símbolos no latinos, aunque estos últimos no son comunes en la práctica.

Las variables en JavaScript son dinámicas, lo que significa que pueden contener cualquier tipo de valor:

				
					let x = 5;
x = "John";

				
			

Hay 8 tipos de datos en JavaScript:

  • number, tanto para números enteros como de punto flotante
  • bigint para números enteros de longitud arbitraria
  • string para texto
  • boolean para valores lógicos: true/false
  • null, que representa un valor vacío o inexistente
  • undefined, que representa una variable no asignada
  • object y symbol, utilizados para estructuras de datos complejas e identificadores únicos, que exploraremos más adelante.

El operador typeof se utiliza para obtener el tipo de un valor, con dos excepciones notables:

				
					typeof null == "object"; // un error conocido en el lenguaje
typeof function(){} == "function"; // las funciones tienen un tipo especial

				
			

Más en: Variables y Tipos de Datos.

Interacción

En el entorno del navegador, interactuamos con los usuarios utilizando funciones básicas de interfaz:

  • prompt(pregunta, [valorPredeterminado]): Muestra una pregunta y devuelve la entrada del usuario, o null si se cancela.
  • confirm(pregunta): Muestra una pregunta con opciones de Aceptar y Cancelar, devolviendo true o false según la elección del usuario.
  • alert(mensaje): Muestra un mensaje al usuario.

Estas funciones son modales, lo que significa que detienen la ejecución del código hasta que el usuario responde.

Ejemplo de uso:

				
					typeof null == "object"; // un error conocido en el lenguaje
typeof function(){} == "function"; // las funciones tienen un tipo especial

				
			

Más en: Variables y Tipos de Datos.

Interacción

En el entorno del navegador, interactuamos con los usuarios utilizando funciones básicas de interfaz:

  • prompt(pregunta, [valorPredeterminado]): Muestra una pregunta y devuelve la entrada del usuario, o null si se cancela.
  • confirm(pregunta): Muestra una pregunta con opciones de Aceptar y Cancelar, devolviendo true o false según la elección del usuario.
  • alert(mensaje): Muestra un mensaje al usuario.

Estas funciones son modales, lo que significa que detienen la ejecución del código hasta que el usuario responde.

Ejemplo de uso:

				
					let nombreUsuario = prompt("¿Cuál es tu nombre?", "Alice");
let quiereTe = confirm("¿Te gustaría tomar té?");

alert( "Nombre del visitante: " + nombreUsuario ); // Alice
alert( "Quiere té: " + quiereTe ); // true

				
			

Más en: Interacción: alert, prompt, confirm.

Operadores

JavaScript admite una variedad de operadores:

  • Aritméticos: Operadores estándar como * + - /, además de % para obtener el resto y ** para calcular potencias.

  • Concatenación de texto: El operador + se utiliza para concatenar cadenas de texto:

				
					console.log('1' + 2); // '12', texto
console.log(1 + '2'); // '12', texto

				
			
  • Asignaciones: Incluyen asignaciones simples como a = b y asignaciones combinadas como a *= 2.

  • Operadores bit a bit: Trabajan con números enteros de 32 bits a nivel de bits. Consulta la documentación cuando los necesites.

  • Operador condicional (ternario): El operador condicional ?: es el único operador en JavaScript con tres operandos. Devuelve resultA si cond es verdadero, de lo contrario devuelve resultB.

  • Operadores Lógicos: Los operadores && (AND) y || (OR) realizan evaluación de cortocircuito y devuelven el valor en el que se detienen. El operador ! (NOT) invierte el valor booleano.

  • Operador de coalescencia nula: El operador ?? proporciona una manera de seleccionar el primer valor definido de una lista de variables. Por ejemplo, a ?? b devuelve a si a no es null/undefined; de lo contrario, devuelve b.

Más en: Operadores Básicos, Aritméticos, Comparaciones, Operadores Lógicos, Operador de Coalescencia Nula ??.

Bucles

JavaScript admite tres tipos principales de bucles:

				
					// 1
while (condición) {
  ...
}

// 2
do {
  ...
} while (condición);

// 3
for(let i = 0; i < 10; i++) {
  ...
}

				
			

La variable declarada en el bucle for(let...) solo es visible dentro del bucle. También es posible omitir let y reutilizar una variable existente.

Las directivas break/continue permiten salir de un bucle o continuar con la siguiente iteración. Las etiquetas pueden usarse para controlar bucles anidados.

Más detalles en: Bucles: while y for.

En futuros capítulos, exploraremos otros tipos de bucles para manejar objetos de manera eficiente.

La Construcción «switch»

El constructo switch puede reemplazar múltiples instrucciones if. Utiliza una comparación estricta (===):

				
					let edad = prompt('¿Cuántos años tienes?', 18);

switch (edad) {
  case 18:
    alert("Has ingresado un número, no una cadena");
    break;

  case "18":
    alert("¡Funciona!");
    break;

  default:
    alert("Este valor no coincide con los anteriores");
}
				
			

Detalles en: La Sentencia switch.

Funciones

Hemos explorado tres formas de definir funciones en JavaScript:

  • Declaración de Función: Definida en el flujo principal del código

				
					function suma(a, b) {
  let resultado = a + b;

  return resultado;
}

				
			

Expresión de Función: Definida como parte de una expresión

				
					let suma = function(a, b) {
  let resultado = a + b;

  return resultado;
};

				
			

Funciones Flecha:

				
					// Expresión en el lado derecho
let suma = (a, b) => a + b;

// Sintaxis multilínea { ... }, se requiere return explícito aquí:
let suma = (a, b) => {
  // ...
  return a + b;
}

// Sin argumentos
let saludar = () => alert("Hola");

// Con un solo argumento
let doble = n => n * 2;

				
			

Las funciones en JavaScript pueden tener variables locales, que son variables declaradas dentro de la función y solo visibles dentro de ella.

Los parámetros de las funciones pueden tener valores predeterminados, como en function suma(a = 1, b = 2) {...}.

Todas las funciones en JavaScript devuelven algo. Si no se especifica un return, el valor devuelto es undefined.

Más en: Funciones, Funciones Flecha, Introducción.

Related Post

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *