Sintaxis javascript
Contents
Sintaxis javascript#

Sintáxis básica de JavaScript
Índice
Elementos básicos del lenguaje#
Instalación#
Instalación: No se requiere, con un navegador compatible como Chrome o Firefox es suficiente.
Extensión de archivos: .js
Comentarios#
Comentarios de una sola línea:
1// comentario de una sola linea
Comentarios multilínea:
1/* Comentario
2multilinea
3en Javascript */
Entrada y salida estandar#
Datos de entrada y salida a través de la consola y/o el navegador.
1// Ejecutar ventana emergente:
2alert('Soy un mensaje emergente');
3
4// retorno en consola:
5console.log("Mensaje desde consola");
6
7// Entrada desde ventana emergente:
Estructura en javascript#
Código javascript puro:
1// Ejemplo de carga Javascript cuando todo el DOM está listo:
2document.addEventListener('DOMContentLoaded', () => {
3 alert("Soy una alerta JavaScript");
4 });
código javascript junto a HTML:
1<!DOCTYPE html>
2<html lang="en">
3<head>
4 <meta charset="UTF-8">
5 <meta http-equiv="X-UA-Compatible" content="IE=edge">
6 <meta name="viewport" content="width=device-width, initial-scale=1.0">
7 <title>Document</title>
8</head>
9<body>
10 <p>Soy un párrafo</p>
11 <script type="text/javascript">
12 document.addEventListener('DOMContentLoaded', () => {
13 alert("Soy una alerta JavaScript");
14 });
15 </script>
16</body>
17</html>
Cargar JavaScript en HTML:
1<!DOCTYPE html>
2<html lang="en">
3<head>
4 <meta charset="UTF-8">
5 <meta http-equiv="X-UA-Compatible" content="IE=edge">
6 <meta name="viewport" content="width=device-width, initial-scale=1.0">
7 <title>Document</title>
8</head>
9<body>
10 <p>Soy un párrafo</p>
11 <script src="script.js"></script>
12</body>
13</html>
Concatenación#
Concatenación de variables y cadenas se realiza con +
1var nombre = "Guillermo";
2
3// Concatenación básica:
4console.log("Te llamas " + nombre);
5
6// uso de templates:
7console.log(`te llamas ${nombre}`);
Variables y tipos de datos#
Declaración, asignación y tipo:
1// declaración y asignación variable global:
2var consola = "PlayStation";
3
4// variable local de alcance limitado:
5let consola = "PlayStation";
6
7// tipos:
8var cadena = "Cadena de texto";
9var entero = 150;
10var decimal = 10.25;
11var booleano = true;
Atención
var se utiliza comunmente para declarar variables que se van a usar en cualquier parte del codigo, esto implica que pueden suceder posibles errores y conflitos si se agranda el código. Por ello se recomienda el uso de let especialmente en funciones y otros ámbitos para limitar su uso en otras partes.
Constantes:
1const nacimiento = 1987;
Operadores#
Operadores aritméticos#
Operaciones aritméticas:
1var suma = 10 + 20;
2var resta = 10 - 10;
3var multiplicar = 10 * 2;
4var division = 6 / 2;
5var resto = 10 % 3;
Incremento y decremento:
1// Incremento
2var dato = 10;
3dato++
4// decremento:
5dato--
Asignar operación:
1suma += 10 ;
2resta -= 10;
3multiplicar *= 10;
4division /= 6;
5resto %= 10;
Operadores relacionales#
Validación entre dos números.
Mayor que: >.
Menor que: <.
Mayor o igual que: >=.
Menor o igual que: <=.
Igual que: ==.
Operadores lógicos#
Expresiones de operaciones lógicas.
and: &&.
or: ||.
not: !.
Estructuras de control#
Condicional if#
if sencillo:
1// variables:
2var numA = 11;
3var numB = 15;
4
5// comprobar cual es mayor:
6if(numA > numB){
7 console.log("Número A es mayor que número B");
8}
if / else:
1// variables:
2var numA = 11;
3var numB = 15;
4
5// comprobar cual es mayor:
6if(numA > numB){
7 console.log("Número A es mayor que número B");
8}else{
9 console.log("Número B es mayor que número A");
10}
else-if:
1// variables:
2var numA = 15;
3var numB = "15";
4
5// comprobar cual es mayor:
6if(numA > numB){
7 console.log("Número A es mayor que número B");
8}else if(numA === numB){
9 console.log("Son idénticos");
10}else if(numA == numB){
11 console.log("Son parecidos pero uno es String");
12}else{
13 console.log("Número B es mayor que número A");
14}
Atención
En este ejemplo se observa una === ya que en JavaScript al comparar dos números con == si uno es cadena devuelve true la condición, en este caso si quitamos las comillas de numB se cumplirá la condición === que está antes.
Operador ternario:
1// variables:
2var numA = 11;
3var numB = 15;
4
5// comprobar cual es mayor:
6var total = numA > numB ? "Número A es mayor que número B" : "Número B es mayor que número A";
7
8console.log(total);
Condicional Switch#
Estructura de un switch:
1var nota = 6;
2
3// asignamos la variable a evaluar dentro del switch:
4switch(nota){
5 // Vamos asignando casos a evaluar:
6 case 0:
7 console.log("Suspenso");
8 break;
9 case 1:
10 console.log("Suspenso");
11 break;
12 case 2:
13 console.log("Suspenso");
14 break;
15 case 3:
16 console.log("Suspenso");
17 break;
18 case 4:
19 console.log("Suspenso");
20 break;
21 case 5:
22 console.log("Suficiente");
23 break;
24 case 6:
25 console.log("Aprovado");
26 break;
27 case 7:
28 console.log("Bien");
29 break;
30 case 8:
31 console.log("Notable");
32 break;
33 case 9:
34 console.log("Notable Alto");
35 break;
36 case 10:
37 console.log("Sobresaliente");
38 break;
39 default:
40 console.log("No reconozco la nota");
41}
Bucle for#
for básico:
1// introducir un valor:
2var tabla = prompt("Introduce una tabla");
3
4// recorrer valor e incrementar la tabla
5for(let i = 1; i <= 10; i++){
6 console.log(`${tabla} x ${i} = ${tabla * i}`);
7}
foreach:
1// Array de valores:
2var consolas = ["PlayStation", "MegaDrive", "GameBoy", "Super Nintendo"];
3
4// recorrer valor e incrementar la tabla
5for(let i in consolas){
6 console.log("Consola: " + consolas[i]);
7}
Bucle while#
While sencillo:
1var productos = 5;
2
3while(productos >= 0){
4 console.log("Productos en stock: º " + productos);
5 productos--;
6}
do-while:
1var productos = 0;
2
3do{
4 console.log("Quedan: " + productos + " artículos");
5 productos --;
6}while(productos >= 0);
Detener secuenda de script#
1for(let i = 0; i < 10; i++){
2
3 console.log("Valor es igual a: " + i);
4
5 if(i > 5){
6 console.log("Una pausita");
7 // Rompemos la instrucción.
8 break;
9 }
10}
11console.log("Fuera del ciclo");
Tipos de datos avanzados#
Arrays#
Declaración tradicional:
1var consolas = ["PlayStation", "MegaDrive", "Saturn"];
2
3console.log(consolas[2]);
Array multidimensional:
1var domesticas = ["PlayStation", "MegaDrive", "Saturn"];
2var portatiles = ["GameBoy", "PSP", "PS Vita"];
3
4var consolas = [domesticas, portatiles];
5
6console.log(consolas[1][2]);
7
8// nueva portatil:
9consolas[1].push("3DS");
10console.log(consolas[1][3]);
Desestructuración de Arrays:
1// array:
2var consolas = ["PlayStation", "MegaDrive", "Saturn"];
3
4// desestructuración:
5var [consola1, consola2, consola3] = consolas;
6
7console.log(`${consola1}, ${consola2}, ${consola3}`);
Objetos literales#
Declaración tradicional:
1var objeto = {
2 "nombre":"Pepe",
3 "apellidos": "García Gámez",
4 "edad": 27,
5 "casado": false,
6 "aficiones": ["golf", "esquiar", "pescar"]
7 };
8
9console.log(`${objeto.nombre} ${objeto.apellidos} tiene ${objeto.edad} años.`);
Recorrer valores en array de objetos:
1// lista de consolas:
2var consolas = [
3 {"nombre": "PlayStation", "lanzamiento": 1994},
4 {"nombre": "PlayStation 2", "lanzamiento": 2001},
5 {"nombre": "PSP", "lanzamiento": 2005}
6];
7
8for(let objeto in consolas){
9 console.log(`La videoconsola ${consolas[objeto].nombre} fue lanzada en ${consolas[objeto].lanzamiento}`);
10}
Desestructuración de objetos:
1// objeto:
2var persona = {"nombre": "Alfredo", "apellidos": "Lopez Gavilán"};
3
4
5// desestructuración:
6var {nombre, apellidos} = persona;
7
8console.log(`${nombre} ${apellidos}`);
Control de errores#
1try{
2 var boton = document.getElementById("boton");
3 // Cremos un error a proposito:
4 boton.addEventListener("DOMContentLoaded", ()=>{
5 console.log("Has pulsado");
6 });
7}catch(e){
8 console.log("Error al activar listener: " + e);
9}
Programación modular#
Funciones#
Procedimienos:
1function saludar(){
2 var saludo = "Hola mundo";
3 console.log(saludo);
4}
funciones:
1function saludar(){
2 var saludo = "Hola mundo";
3 return saludo;
4}
uso de parámetros:
1function saludar(nombre, edad){
2 var resultado = "Hola " + nombre + ", tienes " + edad + " años.";
3 return resultado;
4}
5
6var mensaje = saludar("Guillermo", 31);
7
8console.log(mensaje);
Parametros REST:
1// REST envia un número indefinido de parámetros separados por coma:
2function consolasFavoritas(...consolas){
3 console.log("Mis consolas favoritas: " + consolas);
4}
5
6consolasFavoritas("PlayStation", "MegaDrive", "GameBoy", "GameCube");
Operador SPREAD:
1// podemos asignarle el parámetro rest para recibir los valores SPREAD:
2function cocinar(ingrediente1, ingrediente2, ingrediente3, ...otros){
3 console.log("Necesitamos: " + ingrediente1 + ", " + ingrediente2 + ", " + ingrediente3 + ", " + otros);
4}
5// Especias:
6var especias = ['Ajo', ' Mezcla cajún'];
7
8// Y pasarle parámetros SPREAD:
9cocinar("Pollo", "Pan rallado", "huevos", ...especias);
Funciones anónimas:
1// Función anónima asignada a una variable:
2var saludar = function(nombre){
3 var mensaje = "Hola de nuevo " + nombre;
4 return mensaje;
5}
6
7var persona = prompt("¿Quíen eres?");
8
9// invocamos la función a través de su variable:
10console.log(saludar(persona));
Arrow Functions:
1// Creamos una variable y le psamos una función lambda:
2var saludar = (nombre)=>{
3 console.log("Hola " + nombre);
4}
5
6// Inicializamos la variable como una función:
7saludar("Guillermo");
Callbacks:
1// Creamos una función normal a la que le pasamos un callback llamado sumarCB:
2function calcular(datoA, datoB, sumarCB){
3 var suma = datoA + datoB;
4 // Ejecutamos la función callback pasándole la variable suma:
5 sumarCB(suma);
6}
7
8// Ejecutamos la función calcular y creamos la función callback que recibirá arriba:
9calcular(2, 3, (resultado) => {
10 // La función callback imprimirá el valor que recibe de la función anterior:
11 console.log(resultado);
12});
Programación orientada a objetos#
Los elementos de una clase se definen con ámbito public, private y protected. Adicionalmente se puede agregar el modificador static para poder acceder a los atributos y métodos sin crear un objeto.
Clases y objetos#
Estructura clase:
1// clase:
2class Consola{
3 // Los atributos se inicializan en el constructor:
4 constructor(marca, modelo, lanzamiento){
5 // atributos:
6 this.marca = marca;
7 this.modelo = modelo;
8 this.lanzamiento = lanzamiento;
9 }
10
11 // metodos:
12 saberConsola(){
13 console.log(`Es una ${this.marca} ${this.modelo} que apareció en el año ${this.lanzamiento}`);
14 }
15}
Get y Set:
1class Consola{
2 constructor(marca, modelo, lanzamiento){
3 this.marca = marca;
4 this.modelo = modelo;
5 this.lanzamiento = lanzamiento;
6 }
7
8 saberConsola(){
9 console.log(`Es una ${this.marca} ${this.modelo} que apareció en el año ${this.lanzamiento}`);
10 }
11
12 // get y set:
13 get marca(){
14 return this.marca;
15 }
16
17 set marca(value){
18 this.marca = value;
19 }
20}
Creación de objeto:
1 // crear objeto:
2 var consola = new Consola("Sony", "PlayStation", 1994);
3 // utilizar un método:
4 consola.saberConsola();
5 // asignar nuevo valor:
6 consola.modelo = "Play Station";
7 // asignar con set atributo:
8 consola.marca = "Nintendo";
9 // devolver un valor con get:
10 console.log(consola.marca);
11
12 consola.saberConsola();
Herencia:
1class Consola{
2 constructor(marca, modelo, lanzamiento){
3 this.marca = marca;
4 this.modelo = modelo;
5 this.lanzamiento = lanzamiento;
6 }
7
8 saberConsola(){
9 console.log(`Es una ${this.marca} ${this.modelo} que apareció en el año ${this.lanzamiento}`);
10 }
11}
12
13// clase hija:
14class PlayStation extends Consola{
15 constructor(...juegosFamosos){
16 // pasar atributos al constructor padre usando el superconstructor:
17 super("Sony", "PlayStation", 1994);
18
19 this.juegosFamosos = juegosFamosos;
20 }
21
22 saberJuegos(){
23 console.log(`Los juegos más famosos de ${this.modelo} son ${this.juegosFamosos}`);
24 }
25}
26
27var playstation = new PlayStation("Metal Gear Solid", "Tekken", "Final Fantasy");
28// cargar metodo de la clase hija:
29playstation.saberJuegos();
30// cargar metodo de la clase padre:
31playstation.saberConsola();
Importar y exportar#
En el archivo HTML cargar el script principal como un módulo:
1<script src="main.js" type="module"></script>
Exportar función:
1function saludar(nombre){
2 console.log("Hola " + nombre);
3}
4
5export default saludar;
Importar función:
1import saludar from './saludar.js';
2
3saludar("Guillermo");