4 El lenguaje de programación JavaScript (JS)
4.1 Introducción
JavaScript (JS) es un lenguaje de programación que se utiliza para añadir interactividad a las páginas web. Junto con HTML y CSS, es una de las tres principales tecnologías para la producción de contenido en la Web. Fue creado en 1995 por Brendan Eich, con el fin de dar interactividad a las páginas web leídas con el navegador Netscape Navigator. En la actualidad, es utilizado por todos los principales navegadores web y en la mayoría de los sitios web.
4.2 Principales características
- Puede ejecutarse en el cliente (i.e. navegador web) o en el servidor.
- Es un lenguaje interpretado.
- Soporta varios paradigmas de programación, incluyendo la programación orientada a objetos.
4.3 ¿Qué puede hacerse con JavaScript?
- Controlar multimedia (ej. imágenes, videos, sonidos).
- Reaccionar a “eventos” (ej. presionar un botón).
- Modificar dinámicamente el contenido de una página web.
- Manejar mapas interactivos.
- Y muchas otras cosas más…
4.4 El programa “Hola mundo” en JavaScript
<!DOCTYPE html>
<html lang="es">
<head>
<title>Hola mundo</title>
<meta charset="UTF-8">
<script>
/* Función que imprime "Hola mundo" en una ventana de alerta */
function holaMundo () {
alert("Hola mundo");
}
</script>
</head>
<body>
<button type="button" onclick="holaMundo()">
Presióneme
</button>
</body>
</html>5 Conceptos básicos
5.1 El elemento script de HTML
El elemento script se utiliza para incluir código de algún lenguaje de programación, típicamente JavaScript, aunque también usarse con otros lenguajes y sintaxis (ej. JSON).
Ejemplos de diferentes formas de incluir código JS en un documento HTML:
<!-- Código escrito directamente -->
<script>
/* Función que imprime la hilera "Hola mundo" */
function holaMundo () {
alert("¡Hola mundo!");
}
</script>
<!-- Inclusión de un archivo local -->
<script src="js/misfunciones.js"></script>
<!-- Inclusión de un archivo remoto -->
<script src="https://maps.googleapis.com/maps/api/js"></script>
<!-- Inclusión de un archivo remoto con verificación de integridad -->
<script src="https://unpkg.com/leaflet@1.7.1/dist/leaflet.js" integrity="sha512XQoYMqMTK8LvdxXYG3nZ448hOEQiglfqkJs1NOQV44cWnUrBc8PkAOcXy20w0vlaXaVUearIOBhiXZ5V3ynxwA==" crossorigin=""></script>5.2 Sintaxis de JavaScript
5.2.1 Comentarios
Para varias líneas:
/* Este es un
comentario de
varias líneas
*/Para una línea:
var i = 1; // contador inicializado en 1
var j = 2; // contador inicializado en 2 5.2.2 Declaración e inicialización de variables
Se declaran con la palabra reservada var y se inicializan con el operador =.
var lenguaje;
var numeroAureo, pi;
var esBisiesto = false;
lenguaje = "JavaScript";
numeroAureo = 1.61803, pi = 3.14;El operador = se usa también para actualizar los valores de las variables, después de inicializarlas.
5.2.3 Tipos de datos
5.2.3.1 Numéricos
Incluye números tanto enteros como decimales.
var cantidadEstudiantes = 12;
var pi = 3.14;
x1 = 1, x2 = 2, x3 = 4, x3 = 8, x4 = 16;
suma = 10 + 20; resta = 20 - 2;
multiplicacion = 2 * 3; divison = 2.4 * 4.7;
i = 10; j = 20;
i++; // Resultado: 11
j--; // Resultado: 195.2.3.2 Textuales
Son hileras de texto escritas entre comillas simples o dobles.
var continente = "América";
var pais = "Costa Rica", provincia = 'Heredia';
cita = "'Pienso, por lo tanto existo', (René Descarte, 1637)";
nombreCompleto = "John" + " " + "Doe"; // resultado: "John Doe" 5.2.3.3 Booleanos
Tienen dos posibles valores: verdadero (true) o falso (false).
var esBisiesto = true;
var esLunes = false;
// "Y" lógico (AND)
2 > 1 && 2 == (1 + 1); // Resultado: true;
// "O" lógico (OR)
1 > 2 || 4 < 3; // Resultado: false;
// "No" lógico (NOT)
!(2 > 1); // Resultado: false;5.2.3.4 Arreglos (arrays)
Sus elementos se separan con comas y se encierran entre paréntesis cuadrados ([]). Sus índices (i.e. posiciones) comienzan en 0.
var nombres = ['Carlos', 'Lucía', 'Jorge'];
var numeros = [20, 9, 10.3];
nombres[0]; // Resultado: 'Carlos'
numeros[2]; // Resultado: 10.35.2.3.5 Objetos
Son estructuras compuestas por listas de tuplas de la forma propiedad:valor.
var perro = {nombre:'Lassie', raza:'Collie', sexo:'Femenino', edad:7 };
perro.nombre; // Resultado: 'Lassie'
perro.edad; // Resultado: 75.2.4 Funciones
Declaración
function [nombre-función] ([arg1], [arg2], ..., [argn]) {
[cuerpo-función]
return [valor-retorno]
}Ejemplo
function cuadrado (numero) {
c = numero * numero;
return c;
}
cantidad = cuadrado(8);5.2.5 Condicionales
5.2.5.1 if
Sintaxis
if ([condición]) {
[código a ejecutarse si la condición es verdadera];
}Ejemplo
var x = 2, y = 4;
if (x < y) {
alert("x es menor o igual que y");
}5.2.5.2 if - else
Sintaxis
if ([condición]) {
[código a ejecutarse si la condición es verdadera];
} else {
[código a ejecutarse si la condición es falsa];
}Ejemplo
var x = 2, y = 4;
if (x < y) {
alert("x es menor o igual que y");
} else {
alert("x es mayor o igual que y");
}5.2.5.3 if - else if - else
Sintaxis
if ([condición-1]) {
[código a ejecutarse si la condición-1 es verdadera];
} else if [condición-n]{
[código a ejecutarse si la condición-n es verdadera];
} else {
[código a ejecutarse si todas las condiciones son falsas];
}Ejemplo
var x = 2, y = 4;
if (x < y) {
alert("x es menor o igual que y");
} else if (x > y) {
alert("x es mayor que y");
} else {
alert("x es igual a y");
}5.2.5.4 switch
Sintaxis
switch ([expresión]) {
case [opción-1]:
[código a ejecutarse para la opción-1]
break;
case [opción-n]:
[código a ejecutarse para la opción-n]
break;
default:
[código a ejecutarse si no se cumple ninguna opción]
}break detiene la ejecución e impide que las otras opciones sean evaluadas.
Ejemplo
codigoMes = 1;
switch (codigoMes) {
case 1:
nombreMes = "Enero";
break;
case 2:
nombreMes = "Febrero";
break;
case 3:
nombreMes = "Marzo";
break;
default:
nombreMes = "Otro";
}
alert(nombreMes);5.2.6 Ciclos
5.2.6.1 for
Sintaxis
for ([expresión-inicial];[condición]; [expresión-incremento]) {
[cuerpo-ciclo]
}Ejemplo
// Imprime los cuadrados de i, para i en [1..3]
for (i = 1; i <= 3; i++) {
alert(i * i);
}5.2.6.2 while
Sintaxis
while ([condición]) {
[cuerpo-ciclo]
}Ejemplo
// Imprime los cuadrados de i, para i en [1..3]
var i = 1;
while (i <= 3) {
alert(i * i);
}5.2.6.3 for.. in
Sintaxis
for ([variable] in [objeto]) {
[cuerpo-ciclo]
}Ejemplo
// Imprime los valores de las propiedades de un objeto
var perro = {nombre:'Lassie', raza:'Collie', sexo:'Femenino', edad:7 };
for (i in perro) {
alert(perro[i]);
i++;
}5.2.6.4 do .. while
Sintaxis
do {
[cuerpo-ciclo]
} while ([condición]);Ejemplo
// Imprime los cuadrados de i, para i en [1..3]
var i = 1;
do {
alert(i * i);
i++;
} while (i <= 3);5.3 Ejercicios
Implemente las siguientes funciones el JavaScript. En el código HTML, implemente para cada una un botón que realice llamados de prueba e imprima los resultados con alert().
- Una función que reciba una hilera con un nombre y retorne “Hola”+nombre (ej. “Hola Manuel”).
- Una función que reciba un número y retorne su cuadrado.
- Una función que reciba un número, correspondiente a la edad de una persona, y retorne una hilera indicando si la persona es menor de edad (< 18), adulto (>= 18 y < 65) o adulto mayor (>= 65).
- Una función que reciba un arreglo de números y retorne el promedio de esos números.
- Una función que reciba un arreglo de números y retorne la suma de los cuadrados de esos números.