Javascript
Javascript
INTRODUCCIÓN
- Lenguaje de programación creado por Brendan Eich en 1995.
- Es el único lenguaje que puede interpretar un navegador web.
- Hasta el año 2009 se usaba muy poco y era considerado un lenguaje
fallido. A partir de ese año empezaron a aumentar sus
funcionalidades y poco a poco fue cogiendo fuerza. Desde 2009 se
puede ejecutar en un servidor con node.js.
- En 2015 llega una nueva versión con numerosas mejoras que
supone una revolución en la programación web.
EVOLUCIÓN
- En 1997, NETSCAPE lleva a Javascript al ECMA (regulador de
estándares europeos) y es aceptado, creándose así el ECMASCRIPT
1.0
- En 1998 se crea el ECMASCRIPT 2 (Ajustándose al estándar
internacional) y en 1999 el ECMASCRIPT 3.
- En 2009 se crea el ECMASCRIPT 5 y en 2011 el ECMASCRIPT 5.1
- En 2015 llega la revolución con el ECMASCRIPT 6
SINTAXIS
- CASE SENSITIVE. ‘Numero’ no es lo mismo que ‘numero’
- Es de TIPADO DÉBIL O DINÁMICO. Las variables son del tipo de dato
que almacenen.
- Las sentencias finalizan con punto y coma: ;
- Los bloques finalizan con una llave: }
- prompt: palabra para introducir datos por parte del usuario.
VARIABLES
- Las variables se pueden DECLARAR, INICIALIZAR Y MODIFICAR.
- DECLARAR: se usa la palabra LET. (‘let numero;’)
- INICIALIZAR: (‘numero = 5’;)
o También se puede declarar e inicializar juntos:
▪ (‘let numero = 5’;)
- MODIFICAR: (‘numero = 3;’)
CONSTANTES
- Son espacios que reservamos en memoria para almacenar un dato
que no cambiará durante la ejecución de nuestro programa.
- DECLARAR E INICIALIZAR: se usa la palabra CONST.
o (‘const pi = 3.14;’)
OPERADORES
A) MATEMÁTICOS:
a. Suma/concatenación: +
b. Resta: -
c. Multiplicación: *
d. División: /
e. Módulo: % (Devuelve el resto de una división)
B) ASIGNACIÓN:
a. Asignación: =
b. Suma y asignación: a+=3; (a=a+3)
c. Resta y asignación: a-=3; (a=a-3)
d. Multiplicación y asignación: a*=3; (a=a*3)
e. División y asignación: a/=2; (a=a/2)
f. Módulo y asignación: a%=2; (a=a%2)
C) INCREMENTO:
a. Post-incremento en 1: a++
b. Pre-incremento en 1: ++a (Primero se incrementa y luego
devuelve)
c. Post-decremento en 1: a--
d. Pre-decremento en 1: --a
D) LÓGICOS. Se verán más adelante.
STRINGS
- Los strings (o cadenas) tienen métodos y propiedades.
- Los métodos es todo aquello que la cadena puede hacer.
- Las propiedades son las características que la cadena tiene por el
hecho de ser una cadena.
- La forma de usarlos es con la nomenclatura del punto.
(cadena.metodo) / (cadena.propiedad) A veces los métodos tienen
parámetros.
- OPERADOR TERNARIO:
o (condición) ? true : false
o (condición) ? (sentencia1 sentencia2) : (sentencia1, sentecia2)
o Ejemplo:
▪ Let num = 2;
▪ (num %2==0) ? console.log(‘·{num} es par’) :
console.log(‘${num} es par’);
ARRAYS
- Almacenar varios datos y agruparlos.
- Se separan por comas y se declaran con llaves cuadradas. []
- Se pueden declarar vacíos. Puede añadirse o eliminarse en el
momento que queramos.
- Los arrays se identifican por su índice, a partir de 0.
o números[3]; → tercera posición. (daría 4)
- OPERACIONES CON ARRAYS:
o números[0]+numeros[1]; daría 3 (1+2)
o palabras[1].length; -> daría la longitud de un string.
- MÉTODOS:
o Array.isArray (variable a evaluar). Devuelve true si la variable
es un array o false si no lo es.
▪ Array.isArray(numeros);
o .shift(). Elimina el primer elemento y lo devuelve.
o .pop(). Elimina el último elemento y lo devuelve.
o .splice(a,b,ítems). Eliminar varios elementos de una sola vez.
▪ numeros.splice(3) -> elimina desde la posición 3 hasta
el final.
▪ numeros.splice(2,3) -> elimina 3 elementos desde
posición 2
▪ numero.splice(2,3,10,23) -> elimina 3 elementos desde
posición 2 y añade desde esa posición los números 10 y
23
o .slice(a,b) -> Extrae elementos.
o .push(item1, item2…) -> Añade elementos al final-
o .unshift(item1, item2…) -> Añade elementos al principio.
o .indexOf(valor)-> Encuentra el primer elemento que coincida.
o .lastIndexOf(valor)-> Encuentra el último elemento que
coincida.
o .reverse() -> Invierte el orden del array
o .join(‘separador’) -> Devuelve un string con el separador
indicado. Por defecto son comas. numeros.join(‘-‘);
BUCLES
- Determinados: los que sabemos el número de veces del bucle.
- Indeterminados: los que no sabemos el número de veces del bucle.
BUCLE FOR OF / FOR IN: Simplifica el bucle tradicional sin tener que darle
un número de vueltas (i=0) ni realizar un incremento (i++):
- for (let name of names){ código }
o OF: sirve para recorrer el valor de los arrays.
También se puede usar CONTINUE: salta una posición del bucle y después
continúa.
OBJETOS
- Son estructuras de datos que representan propiedades, valores y
acciones que puede realizar el objeto.
- TODOS LOS OBJETOS tienen:
o Propiedades o atributos
o Comportamientos o acciones
- DECLARAR UN OBJETO:
o const computer = { pantalla:17, modelo: `macbook` }
- ACCEDER A SUS propiedades y acciones:
o computer.pantalla; computer.modelo; etc..
- Recorrer todo en un bucle si hay muchas propiedades:
o for(const key in person){ console.log(key); }
- Para imprimir los valores:
o for(const key in person){ console.log(computer[key]); }
FUNCIONES
- Reutilizar código.
- Estructura:
o const nombreFuncion = () =>{ código }
o function nombreFuncion(){ código }
- Una función puede tener parámetros:
o const nombreFuncion = (parametro1, parametro2) =>{
código }
o function nombreFuncion(parametro1, parametro2){ código }
- Las funciones devuelven valores, o solo hacen algo en concreto.
o Para devolver se usa la palabra return. (para function)
o Para const, puede que no se necesite usar el return.
- Para invocar la función se usa: nombreFuncion();
Ejemplo:
const saludarUsuario = (user) => console.log(`Hola ${user}`);
saludarUsuario('juan');
Ejemplo:
const suma = (num1, num2) =>{
if(num1 == 2){
return num1 + num2;
}
return num1;
}
console.log(suma(7,3));
PROGRAMACIÓN ORIENTADA A OBJETOS
- Conceptos: clase, herencia, objeto, método, evento, etc
- En POO se usan clases que son como plantillas que se utilizan para
crear objetos iguales.
- Cuando creamos un objeto, a esa acción se le denomina
INSTANCIAR un objeto.
- Necesitamos una función constructora. Se tiene que llamar
constructor y se ejecuta cada vez que creemos un objeto.
EJEMPLO:
class Persona{
constructor(nombre, apellido, edad){
this.nombre = nombre;
this.apellido = apellido;
this.edad = edad;
}
}
saludar(){
return `Me llamo ${this.nombre} ${this.apellido} y tengo ${this.edad}
anos`
console.log(juan);
console.log(marta.saludar());
ARRAYS-2: MÉTODOS
- .from(iterable) - Convierte en array el elemento iterable
o Array.from(variable)
- .sort([callback]) - Ordena los elementos de un array
alfabéticamente(valor Unicode), si le pasamos un callback los
ordena en función del algoritmo que le pasemos.
o console.log(letters.sort())
o console.log(numbers.sort((a,b)=>a-b))
- .forEach(callback(currentValue, [index])) - ejecuta la función
indicada una vez por cada elemento del array.
o numbers.forEach((number)=>console.log(number))
o numbers.forEach((number, index) =>
console.log(`${number} esta en la posicion ${index}`))
- .some(callback) - Comprueba si al menos un elemento del array
cumple la condición
o const words = ['HTML', 'CSS', 'JavaScript', 'PHP']
console.log(words.some(word => word.length>10));
- .every(callback) - Comprueba si todos los elementos del array
cumplen la condición
o const words = ['HTML', 'CSS', 'JavaScript', 'PHP']
console.log(words.every(word => word.length>10));
- .map(callback) - Transforma todos los elementos del array y
devuelve un nuevo array
o const numbers = [1, 2, 3, 4, 5];
const numbers2 = numbers.map(number => number * 2)
- .filter(callback) - Filtra todos los elementos del array que cumplan la
condición y devuelve un nuevo array
o const numbers2 = numbers.filter(number => number > 40)
- .reduce(callback) - Reduce todos los elementos del array a un único
valor (suma, multiplicación, etc)
o console.log(numbers.reduce((a,b)=>a+b))
o console.log(numbers.reduce((a,b)=>a*b))