INTRODUCCIÓN
Java Scripts es el más incomprendido de todos los lenguajes, primero por tener el prefijo de
Java, por tener mucho de C y C++, por no tener typeCasting y por ultimo por tener errores de
diseño.
Microsoft crea su propia implementación JScript que junto con NetScape nace la
estandarización ECMA y nace JavaScript estandarizado, y desde la V5 y V6 nece TC-39.
Comentarios:
Para comentarios de una única línea:
// Esto es un comentario
console.log(unaVariable);
Bloques:
Un bloque no es más que una serie de instrucciones entre una llave de apertura y otra de
cierre, la principal función de un bloque es definir un ámbito: global o local.
// Ámbito global
{
// Esto es un bloque de ámbito local
console.log('Esto es un bloque');
}
Tipos de datos:
JavaScript es un lenguaje no tipado, es decir dinámico, lo que significa que un valor puede
cambiar de tipo según el requerimiento del programa es lo contario a los lenguajes
tipados.
Para saber que tipo de datos es una variable en JavaScript se usa el typeof por ejemplo:
typeof "Hola aprendices de JavaScript!"; // devolverá 'string'
typeof false; //devolverá 'boolean'
Variable y ámbito:
Desde la versión 2015 de JavaScript, también conocida como ES6, las variables deben
declararse con las palabras clave let o const.
let m=1
m=5 // m puede cambiar de valor
const n=5
n=4 //sale error ya que n es una constante y su valor puedo cambiar
Es decir las constantes no pueden cambiar de valor, la excepción son los objetos ejemplo:
const unObjeto = { saludo: "hola" };
unObjeto.saludo = "Qué tal?"; // No representa ningún problema
Pero podemos declarar variable tipo string de manera estricta con el operador new de la
siguiente manera:
antes de la llegada de los los templates literal la manera de conseguir este resultado era
con el operador de concatenación de cadenas
1. Arreglos:
2. Conjuntos
Un conjunto o set es una estructura que representa una colección de valores únicos (no
pueden repetirse).
const conjunto = new Set();
añadir elementos:
conjunto.add(20);
Set y array
3. Mapas
Los mapas no son más que listas de parejas clave-valor. Son conocidos como hashes,
tablas o diccionarios en otros lenguajes de programación.
Diferencia con los objetos
1. En los mapas tanto la clave como valor pueden ser de cualquier tipo, en los objetos
solo pueden ser cadenas de texto
2. En los objetos podemos tener métodos propios o podemos definir nuevos
métodos sobre los objetos, a diferencia que en mapas solo podemos utilizar un
método concreto y no podemos definir nuevos
Creación de Map:
4. FUNCIONES Y OBJETOS
Valores devueltos: La variable se inicializa con los valores devueltos por la función
function mensaje(cadena){
return cadena;
}
const devuelve= mensaje("Adios");
console.log(devuelve);
Parámetros por defecto:
Funciones Flecha:
Este tipo de funciones es introducido con ES6, la cual es muy limpia y directa y esta
inspirada en el superset.
Ejemplo 1:
let val= a=>a**3;
console.log(val(3));
Ejemplo 2:
let suma = (a,b) => {
let d = a+b;
return (d+a);
}
console.log(suma(1,2));
Funciones callback
Son funciones que se pasan como parámetro a otras funciones y es muy usada para la
programación orientada a eventos
Funciones anónimas: Son funciones que no tienen nombre y no han sido definidas
previamente. Ejemplo recorrido de array
OBJETOS LITERALES:
Ejemplo:
const buzz = {
nombre: "Buzz Lightyear",
amigos: [ "Jessie", "Mr. Potato"],
frase: () => "Hasta el infinito y más allá!"
};
console.log(buzz.nombre);
OBJETO THIS:
const otromensaje = {
d: "Hola",
frase(){
return "Otra vez " + this.d;
}
}
console.log(otromensaje.frase());
5. EL DOM
Document Object Model, framework dispuesto por los navegadores para JavaScript pueda
interactuar con la pagina web, es decir le permite: Cambiar y mover elementos, modificar
atributos cambiar estilos. DOM representa un documento HTML como un árbol de ítems o
nodos interconectados. Para el DOM, cualquier cosa en una página web es un nodo: desde
las etiquetas HTML, pasando por el texto dentro de las mismas, hasta incluso los atributos
anexados a las etiquetas
DOM1 – 1998: W3C decide estandarizar el acceso a los elementos de la página web.
El DOM presenta varios métodos para acceder a los elementos de la pagina web pero lo
hace a través del objeto Document. Uno de esos métodos es el body.
Node.js no tiene acceso al API del DOM ya que es una implementación de Java Scripts para
el servidor, por esa razón se creó JSDOM que no es mas que un framework para Node que
simula gran parte de la funcionalidad del navegador por eso se llama DOM virtual.
const jsdom = require("jsdom");
const { JSDOM } = jsdom;
const dom = new JSDOM(`<!DOCTYPE html><p>Hola!</p>`);
const document = dom.window.document;
JSDOM permite además ejecutar programas en segundo plano con la tecnología Web
Worker, es decir una manera de incorporar una especie de funcionalidad multihilo a
JavaScript.
Localizar elementos en el navegador: getElementById(‘ElementoID’);
:: Superelemento h3::first-line
querySelector(Selector)
nodo.setAttribute("class", "despedida");
nodo.getAttribute("class");
Creación de elementos
Ejemplo:
También podemos activar el modo estricto por función, como en el siguiente ejemplo:
function muyEsctricto(){
'use strict';
// código de la función
}
Algo más sobre funciones
1. Capacidad de memorización: Una función puede alterarse a sí misma.
function unaFuncion(){
return 'Hola 1';
unaFuncion = function(){
return 'Hola 2';
}
}
2. Funciones invocadas inmediatamente: son funciones anónimas que se invocan al ser
definidas.
(function(){
var hola= “Mundo”;
console.log(`hola ${hola}`);
})();
function funcionExterna() {
const variableExterna = 'Variable externa';
function funcionInterna() {
const variableInterna = 'Variable interna';
}
console.log(variableExterna);
funcionInterna();
}
Programación Funcional:
Los elementos esenciales de la programación funcional son la capacidad de pasar funciones
como parámetros a otras funciones (callbacks), la existencia de funciones anónimas y los
closures.
No Trabaja con funciones impuras:
let numero =2;
let resultado=0;
function suma1(x){
resultado = numero+x;
}
Es impura porque accede a una variable que no esta dentro de su ámbito
Solo con Funciones puras
const unNumero = 2;
function sumaPura(x,y){
return x + y;
}
resultado = sumaPura(unNumero, 90);
console.log(resultado);
Funciones de orden superior
Son funciones que aceptan otras como argumento o devuelven una función como resultado
o ambas cosas.
const gente = [
{ nombre: "Pedro", edad: 46 },
{ nombre: "Jacinto", edad: 29 },
{ nombre: "Esmeraldo", edad: 76 },
{ nombre: "Cara" , edad: 8 },
];
const mayoresEdad = (gente) => {
return gente.filter((persona) => persona.edad >= 18);
}
console.log(mayoresEdad(gente));
Programación OO
class Persona{
constructor(nombre = "Pedro"){
console.log(nombre);
}
static especie(){
return "homo sapiens sapiens";
}
}
const persona1= new Persona;
const persona2 = new Persona("Juan");
console.log(Persona.especie());
Prototype
Permite añadir métodos a una clase que ya existe:
class Persona{
constructor(nombre = "Pedro"){
console.log(nombre);
}
static especie(){
return "homo sapiens sapiens";
}
}
Persona.prototype.despedida=function(){console.log("Adios");}