No necesitamos instalar JavaScript, todos los navegadores puede correr JS. Solo un navegador y un editor de texto.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Manual JS</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- Script JS -->
<script src="script.js"></script>
</body>
</html>
Comentario de una línea:
// Comentario
Comentario de varias líneas:
/* Líneas
de Comentarios
*/
Primer “Hola Mundo” en la consola:
console.log("Hola Mundo")
Tipos de Datos:
- undefined
- null
- boolean
- string
- symbol
- number
- object
Hay tres formas de declarar una variable:
-
var (es intercambiable y se puede utilizar en todo tu código)
var edad = 22
-
let (solo se será utilizado en el sitio donde se declara)
let nombre = Carlos
-
const (se mantiene fijo el valor y no se puede cambiar)
const pi = 3.14
Declarar:
var a
Asignar
a = 22
Asignar y declarar:
var b = 23
- Suma (+)
- Resta (-)
- Multiplicación (*)
- División (/)
- Resto (%)
var sum = 10 + 10;
console.log(sum)
// 20
var miEdad = 22;
miEdad++;
console.log(miEdad)
// 23
var miEdad = 22;
miEdad--;
console.log(miEdad)
// 21
var a = 3;
/* Para sumar un valor a 'a'
en vez de escribir a = a + 12
Hacemos esto: */
var += 12;
Las variables “string” se declaran usando comillas (‘’ o “”).
var nombre = 'Marco'
var apellido = "Polo"
Para juntas dos strings utilizamos el símbolo ‘+’:
var cadena1 = "Hola" + " Juan"
console.log(cadena1)
// Hola Juan
var cadena1 = "Hola"
cadena1 += " Juan"
console.log(cadena1)
// Hola Juan
var cadena1 = "Hola"
var cadena2 = " "
var cadena3 = "Juan"
var cadenaFinal = cadena1 + cadena2 + cadena3
console.log(cadenaFinal)
// Hola Juan
var marcaLongitud = 0
var marca = "Nike"
marcaLongitud = marca.length;
console.log(marcaLongitud)
// 4
var primerArray = ["Juan", 22]
Arrays dentro de un Array:
var nest = [["verde", 34], ["rojo", 56]]
var numero = [50, 60, 70];
var primerNumero = numero[0];
console.log(primerNumero)
// 50
var numero = [50, 60, 70];
numero�[0] = 34;
// el primer número ha cambiado de 50 a 34
var nest = [["verde", 34], ["rojo", 56]];
var color = next [1][0];
// rojo
Agregar otro Array a un Array multidimensional.
var animales = [["perro", "gato"], ["tortuga", "serpiente"]];
animales.push(["gallina", "paloma"]);
// [[perro, gato], [tortuga, serpiente], ["gallina", "paloma"]]
La misma función que “Push” solo que en esta caso introduce el nuevo valor al principio del Array.
var animales = [["perro", "gato"], ["tortuga", "serpiente"]];
animales.unshift(["gallina", "paloma"]);
// [["gallina", "paloma"], [perro, gato], [tortuga, serpiente]]
Para eliminar el primer valor adentro de un Array y asignarla a una nueva variable.
var numeros = [1, 2, 3]
var quitarNumero = numeros.pop()
// quitarNumero ahora es igual a "3" y numero es igual a [1, 2]
La función es la misma que con “Pop” solo que ahora elimina el primer valor del Array.
var numeros = [1, 2, 3]
var quitarNumero = numeros.shift()
// quitarNumero ahora es igual a "1" y numero es igual a [2, 3]
function saludar(){
console.log("Hola, Mundo")
}
saludar();
// Hola, Mundo
function resta(a, b){
console.log(a - b);
}
resta(10, 9);
// 1
function suma(num){
return num + 3;
}
console.log(suma(7));
// 10
Al declarar variables fuera de funciones, estas sirven en cualquiera. Mientras que cuando se declaran dentro de una función, estas solo funcionan dentro de la función en la que fueron declaradas.
Para declarar variables adentro de una función y que funcionen de manera global no hay poner ningún prefijo antes de declarar la variable:
numero = 5
var global = 5
function fun1(){
var noEsGlobal = 2
otraGlobal = 3
}
NOTA: Si declaramos una variable sobre la función que ya existe con el mismo nombre, esta será la que usará la función.
Comparadores:
- Igualdad (==)
- Igualdad Estricta (===) -> necesitan ser el mismo tipo de variable.
- Mayor (>)
- Mayor o Igual (>=)
- Menor (<)
- Menor o Igual (<=)
- Diferente (!=)
- Diferente Estricto (!==)
- Y (&&)
- O ( || )
function comparacion(num){
if(num < 0){
return 'Número negativo'
}
else if(num > 0 && num <= 9){
return 'Número natural'
}
else{
return 'Número positivo'
}
}
console.log(comparacion(10));
// Número positivo
function casos(color){
var respuesta = "";
switch(color){
case 1:
respuesta = "verde";
break;
case 2:
respuesta = "azul";
break;
case 3:
respuesta = "rojo";
break;
}
return respuesta;
}
console.log(casos(2));
// azul
function casos(color){
var respuesta = "";
switch(color){
case 1:
respuesta = "verde";
break;
case 2:
respuesta = "azul";
break;
case 3:
respuesta = "rojo";
break;
default:
respuesta = "Otro color";
break;
}
return respuesta;
}
console.log(casos(4));
// Otro color
function casos(nivel){
var respuesta = "";
switch(nivel){
case 1:
case 2:
case 3:
respuesta = "bajo";
break;
case 4:
case 5:
case 6:
respuesta = "medio";
break;
case 7:
case 8:
case 9:
respuesta = "alto";
break;
default:
respuesta = "Otro nivel";
break;
}
return respuesta;
}
console.log(casos(4));
// medio
En vez de escribir varias condiciones si hacemos una comparación (sin paréntesis) no devolverá si el valor es verdadero o falso.
function verdaderoFalso(a, b){
return a > b
}
console.log(verdaderoFalso(2, 3));
// false
Los objetos son similares a los arrays, solo que estos se diferencian en vez de usar “indexes” usan propiedades.
"nombre": "Ben",
"raza": "Labrador",
"color": "Negro",
"edad": 7
};
var miPerro = {
"nombre": "Ben",
"raza": "Labrador",
"color": "Negro",
"edad": 7
};
var nombrePerro = miPerro.nombre;
var razaPerro = miPerro.raza;
var miPerro = {
"nombre": "Ben",
"raza": "Labrador",
"color": "Negro",
"edad": 7
};
miPerro.nombre = "Tom";
console.log(miPerro)
// nombre: "Tom"
var miPerro = {
"nombre": "Ben",
"raza": "Labrador",
"color": "Negro",
"edad": 7
};
miPerro.macho = true;
console.log(miPerro)
// macho = true
var miPerro = {
"nombre": "Ben",
"raza": "Labrador",
"color": "Negro",
"edad": 7
};
miPerro.macho = true;
delete miPerro.macho;
Para realizar esto utilizamos “.hasOwnProperty”.
var miPerro = {
"nombre": "Ben",
"raza": "Labrador",
"color": "Negro",
"edad": 7
};
function verificar(valor){
if(miPerro.hasOwnProperty(valor)){
return miPerro[valor];
}
else{
return "No existe";
}
}
console.log(verificar("edad"))
// 7
var almacenamiento = {
"coche": {
"adentro": {
"guantera": "mapas",
"asiento": "guantes",
},
}
};
var miGuantera = almacenamiento.coche.adentro["guantera"];
console.log(miGuantera)
// mapas
Tenemos un array, con dos objetos dentro y cada uno de estos tiene un array.
var misPlantas = [
{
"tipo": "plata",
"lista":[
"rosa",
"tulipan",
"girasol",
]
},
{
"tipo": "árbol",
"lista":[
"roble",
"pino",
]
}
]
var primerArbol = misPlantas[1].lista[0];
console.log(primerArbol)
// roble
var coleccion = {
"2345": {
"album": "Viva",
"artista": "John",
"canciones": [
"Soy yo",
"El amante"
]
},
"1457": {
"album": "Loca",
"artista": "Maria",
"canciones": [
"La mejor soy yo",
"El desenlace"
]
}
}
// Una copia de la colección para hacer pruebas
var copiaDeColeccion = JSON.parse(JSON.stringify(coleccion));
function actualizarColeccion(id, propiedad, valor){
if( valor === ""){
delete [id][propiedad];
} else if (propiedad === "canciones"){
coleccion[id][propiedad] = coleccion[id][propiedad] || [];
coleccion[id][propiedad].push(valor);
} else{
coleccion[id][propiedad] = valor;
}
return coleccion;
}
actualizarColeccion("2345", "canciones", "La canción")
// agregamos "La canción" a lista de canciones
console.log(actualizarColeccion("1457", "artista", "Julia"));
// actualizamos el nombre de "Maria" a "Julia"
var arrayDeNumero = [];
var x = 0;
while (x < 5){
arrayDeNumero.push(x);
x++;
}
console.log(arrayDeNumero);
// 0, 1, 2, 3, 4
var arrayDeNumero = [];
for(var i = 0; i < 5; i++){
arrayDeNumero.push(i)
}
console.log(arrayDeNumero);
// 0, 1, 2, 3, 4
var arrayDeNumero = [];
for(var i = 0; i < 10; i+= 2){
arrayDeNumero.push(i)
}
console.log(arrayDeNumero);
// 0, 2, 4, 6, 8
var arrayDeNumero = [];
for(var i = 10; i > 1; i-= 2){
arrayDeNumero.push(i)
}
console.log(arrayDeNumero);
// 10, 8, 6, 4, 2
var arrayDeNumeros = [9, 10, 11, 12];
var totalDeNumeros = 0;
for(var i = 0; i < arrayDeNumeros.length; i++){
totalDeNumeros += arrayDeNumeros[i];
}
console.log(totalDeNumeros);
// 42
function multiplicarArray(arr){
var producto = 1
for(var i = 0; i < arr.length; i++){
for(var j = 0; j < arr[i].length; j++){
producto *= arr[i][j];
}
}
return producto;
}
var producto = multiplicarArray([[1,2],[3,4],[5,6,7]]);
console.log(producto);
// 5040
La diferencia principal entre los bucles While y Do While, es que el segundo se ejecuta por lo menos una vez ya que la condición se ejecuta al final del bucle.
var miArray = []
var i = 10;
do{
miArray.push(i);
i++;
} while (i < 20)
console.log(miArray);
// 10, 11, 12, 13, 14
Utilizamos Math.random().
var numeroRandom = Math.random();
console.log(numeroRandom);
Lo redondeamos con Math.Floor() y luego lo multiplicamos por un número.
var numeroRandomEntero = var numeroRandomEntero = Math.floor(Math.random() * 20);
console.log(numeroRandomEntero);
function nuestroRango (numMin, numMax){
return Math.floor(Math.random() * (numMax - numMin + 1 )) + numMin;
}
var random = nuestroRango(3, 20);
console.log(random);
Esta función sirve para transformar strings a ints.
function convertirAInt(str){
return parseInt(str);
}
convertirAInt("58");
function convertirAFloat(str){
return parseFloat(str);
}
console.log(convertirAFloat("58.5"));
Como mencionamos anteriormente cuando declaramos con Var, esta se modifica en todo el program, y Let solo en el bloque correspondiente.
function verificar(){
var x = "General"
if(true){
let x = "Bloque";
console.log("x es en este: ", x );
}
console.log("x es esta en el: ", x);
return x;
}
verificar();
// x es en este: Bloque
// x es esta en el: General
Const solo se puede declarar una vez, si intentamos cambiar el valor de una variable conts nos dará error, es recomendable utilizar mayusculas al declarar una variable const para recordarlo.
function imprimir(str){
const FRASE = str + " es fácil";
FRASE = str + " es divertido";
return FRASE;
}
console.log(imprimir("JavaScript"));
// nos dará error por declarar dos veces la variable
Puede funcionar tanto en Arrays, como en Objetos.
const ARRAY = [1,2,3];
function editarArray(){
ARRAY[0] = 4;
ARRAY[1] = 5;
ARRAY[2] = 6;
return ARRAY;
}
console.log(editarArray());
// 4, 5, 6
Usamos Object.freeze().
const ARRAY = [1,2,3];
Object.freeze(ARRAY);
function editarArray(){
ARRAY[0] = 4;
ARRAY[1] = 5;
ARRAY[2] = 6;
return ARRAY;
}
console.log(editarArray());
// 1, 2, 3
Manera de asignar los valores de un Objeto de manera más rápida y sencilla.
var coordenadas = {x:3.2, y:2.7, z:1.8};
// Así de haría normalmente
var x = coordenadas.x;
var y = coordenadas.y;
var z = coordenadas.z;
// Así lo haríamos con este método
var {x : a, y : b, z : c} = coordenadas;
console.log(a, b, c);
// 3.2 2.7 1.8
const TIEMPO = {
hoy: {min:10, max:22},
mañana: {min:8, max:20},
};
function maxDeMañana(x){
const { mañana : {max : maximaMañana}} = x;
return maximaMañana;
}
console.log(maxDeMañana(TIEMPO));
// 20
La diferencia entre Objetos y Arrays, es que los segundos van en orden pero se puede saltar indexes del Array.
const [a, b, , d] = [1, 2, 3, 4];
console.log(a,b,d);
// 1, 2, 4
Template Literals son un tipo especial de String que hacen crear Strings complejos más fácilmente. Podemos poner varia líneas, asignar variables y mucho más.
const PERSONA = {
nombre : "Maria",
edad : 22,
}
const SALUDO = `Ella se llama ${PERSONA.nombre}.
Tiene ${PERSONA.edad} años.`;
console.log(SALUDO);
// Ella se llama Maria.
// Tiene 22 años.
Las funciones Arrow nos permiten escribir
// antes
hello = function() {
return "Hello World!";
}
// arrow functio
hello = () => {
return "Hello World!";
}
Clases son un tipo de función, usando la palabra class para crearla y tiene un constructor adentro.
class Coche {
constructor(marca) {
this.marcadecoche = marca;
}
}
miCoche = new Coche("Ford");
console.log(miCoche.marcadecoche);
// Ford
class DestruirPlaneta{
constructor(planetaObjetivo){
this.planetaObjetivo = planetaObjetivo;
}
}
var zeus = new DestruirPlaneta('Saturno');
console.log(zeus.planetaObjetivo);
// Saturno
Las clases nos permiten utilizar getter y setters. Es recomendable utilizar getter y setters para nuestra propiedades, especialmente con el valor antes de devolverlo o antes de hacer un ‘set’. El nombre no puede ser el mismo, muchos programadores utilizan un ‘_’ antes del nombre.
class Coche {
constructor(marca) {
this._marcadecoche = marca;
}
get cnom() {
return this._marcadecoche;
}
set cnom(x) {
this._marcadecoche = x;
}
}
micoche = new Coche("Ford");
console.log(micoche._marcadecoche)
// Ford
class miCoche {
constructor(marca) {
this._marcacoche = marca;
}
get marcadelcoche() {
return this._marcacoche;
}
set marcadelcoche(x) {
this._marcacoche = x;
}
}
mycar = new miCoche("Ford");
// Cambiamos la marca de coche a Volvo
mycar.marcadelcoche = "Volvo";
console.log(mycar.marcadelcoche)
// Volvo
En un archivo tenemos esto, lo exportaremos.
export const CAPITAL = str => str.toUpperCase()
En esto otro importaremos la función del archivo pasado.
import { CAPITAL } form "./nombredelarchivo" // nombre del archivo
const CAP = CAPITAL("Hola");
console.log(CAP);
// HOLA
const SALUDAR = (string) => {
return "Hola";
}
// Función
export {SALUDAR};
// Variables
export const NOMBRE = "Juan";
Usamos el símbolo ”*”.
import * as NOMBRE from "archivo"
// Importamos todo, asignamos el nombre que deseamos y de donde importamos el archivo (./ si lo importamos del mismo directorio).
El DOM del HTML es un objeto modelo y interfaz de programación de HTML.
<html>
<body>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = "Hola Mundo";
</script>
</body>
</html>
// Elementos por su id
document.getElementById(id)
// Elementos por tu tag
document.getElementsByTagName(tag)
// Elementos por su clase
document.getElementsByClassName(clase)
<!DOCTYPE html>
<html>
<body>
<p id="intro">Hola Mundo</p>
<p id="demo"></p>
<script>
var miElemento = document.getElementById("intro");
document.getElementById("demo").innerHTML =
"El texto del intro es " + miElemento.innerHTML;
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<body>
<p>Hola Mundo</p>
<p id="demo"></p>
<script>
var x = document.getElementsByTagName("p");
document.getElementById("demo").innerHTML =
'El en primer párrafo (index 0) es: ' + x[0].innerHTML;
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<body>
<p>Hola Mundo</p>
<p class="intro">El DOM es muy útil.</p>
<p class="intro">Segundo Párrafo</p>
<p id="demo"></p>
<script>
var x = document.getElementsByClassName("intro");
document.getElementById("demo").innerHTML =
'El primer párrafo (index 0) con la clase="intro" es: ' + x[0].innerHTML;
</script>
</body>
</html>
La manera más sencilla de modificar el contenido de un archivo HMTL es usando la propiedad innerHTML
.
<html>
<body>
<p id="p1">Hola</p>
<script>
document.getElementById("p1").innerHTML = "Nuevo Texto";
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<body>
<h1 id="id01">Encabezado</h1>
<script>
var element = document.getElementById("id01");
element.innerHTML = "Nuevo Encabezado";
</script>
</body>
</html>
Para cambiar el valor de un atributo utilizamos la sintaxis siguiente:
document.getElementById(id).attribute = new value
<!DOCTYPE html>
<html>
<body>
<img id="myImage" src="smiley.gif">
<script>
document.getElementById("myImage").src = "landscape.jpg";
</script>
</body>
</html>
Para cambiar el estilo de un HTML utilizamos la sintaxis siguiente:
document.getElementById(id).style.property=new style
<html>
<body>
<p id="p2">Hello World!</p>
<script>
document.getElementById("p2").style.color = "blue";
</script>
<p>The paragraph above was changed by a script.</p>
</body>
</html>
<!DOCTYPE html>
<html>
<body>
<h1 id="id1">My Heading 1</h1>
<button type="button"
onclick="document.getElementById('id1').style.color = 'red'">
Click Me!</button>
</body>
</html>