Es un lenguaje de programación creado en 1995 por Brendan Eich, para darle dinamismo e interacción a los sitios web.
Hoy es un lenguaje de propósito general.
Es el lenguaje que entienden y ejecutan los navegadores (browsers).
Desde hace algunos años, podemos ejecutar código JavaScript fuera del browser, con NodeJS.
Conjunto de caracteres y símbolos que representan una instrucción. Está compuesta por expresiones.
a = b * 2;
Las sentencias en JS terminan con ;
Es cualquier unidad válida de código que resuelve a un valor.
Expresiones marcadas con ()
((a) = ((b) * (2)));
Tomemos a = x
y b = 7
.
Entonces:
x = 7 * 2; // x = 14
Espacios con nombre para guardar valores.
Son reutilizables y se pueden reasignar.
Usamos la keyword var
para crear nuevas variables.
var nombreDeLaVariable;
var nombreDeLaVariable = 3;
var nombreDeLaVariable = 3;
nombreDeLaVariable = 7;
a + 2; // 3 + 2
- Usar nombres significativos, que representen el contenido
- El nombre puede empezar con cualquier letra, $ ó _
- Hay distinción entre mayúsculas y minúsculas (case sensitive)
- Por convención se utiliza camelCase
Espacios con nombre para guardar valores que no varían.
Son reutilizables, pero no se pueden reasignar.
Math.PI // 3.141592653589793;
const saludo = 'Hola!';
saludo = 'Hola Mundo!'; // TypeError
console.log(nombreDeLaVariable);
JavaScript tiene tipado dinámico y débil: las variables se declaran sin un tipo de dato explícito, pueden modificarse, compararse y operar sin necesidad de ser convertidas previamente.
Los valores sí tienen tipos.
String
Number
Boolean
Representan cadenas de caracteres (texto).
Se escriben entre comillas simples ó dobles, sin mezclar.
'JavaScript' // OK ✔
"JavaScript" // OK ✔
'JavaScript" ✗
Cualquier texto entre comillas es un String
'43' // Esto también es un String
var titulo = 'You Don\'t Know JavaScript';
titulo.length; // 25
'titulo'.length; // 5
Se usa para combinar diferentes cadenas de caracteres.
var lenguaje = 'JavaScript';
var anio = 1995;
var unaFrase = lenguaje + ' apareció en ' + anio;
Números enteros ó de punto flotante, JS no los diferencia.
var unEntero = 27;
var unNumeroDePuntoFlotante = 2.5;
var unEnteroNegativo = -10;
10 + 91; // 101
1 + Math.PI; // 4.141592653589793
27 - 4 // 23
3 - 5 // -2
3 - 1.5 // 1.5
7 * 3 // 21
4 * 12.5 // 50
1 / 2 // 0.5
8 / 2 // 4
1.0 / 3.0 // 0.3333333333333333
Son equivalentes: x = x + 1
, x += 1
, ++x
, x++
var x = 5;
x += 1; // 6;
Son equivalentes: x = x - 1
, x -= 1
, --x
, x--
var x = 5;
x -= 1; // 4;
Es el resto de dividir x
por y
.
10 % 2 // 0
11 % 2 // 11
x % 2 === 0 // siempre que x sea par
y % 2 === 1 // siempre que y sea impar
Tiene 2 valores posibles: true y false, para indicar si algo es verdadero o falso.
2 > 1 // true
1 > 2 // false
'hola' === 'Hola' // false
Nota: al comparar valores, usar siempre ===
Es cualquier expresión que pueda evaluarse como verdadera ó falsa y por lo tanto, reducirse a true
ó false
.
Compara sólo el valor
1 == 1 // true
1 == '1' // true
Compara el valor y tipo del mismo
1 === 1 // true
1 === '1' // false
Son análogos a la igualdad.
23 != '23' // false
23 !== '23' // true
1 < 2 // true
También podemos comparar caracteres, según su orden en la tabla ASCII.
'a' < 'b' // true
77.5 > 80 // false
10 <= 10 // true
31 >= 33 // false
Se utilizan para evaluar valores y expresiones booleanas. Retornan un valor booleano.
Retorna true
si y sólo si todas las expresiones evaluadas son verdaderas. Caso contrario, retorna false
.
true && true // true
Retorna true
si al menos una de las expresiones es verdadera; sino, retorna false
.
true || true // true
true || false // true
false || false // false
Negación. Retorna false
si la expresión es verdadera; sino, retorna true
.
!(true) // false
!(2 > 1) // false
!(expresión booleana verdadera) // false
¿Cuál es el resultado final, true
ó false
?
var x = 10;
var y = 'a';
y === 'b' || x >= 10
¿Cuál es el resultado final, true
ó false
?
var x = 3;
var y = 8;
!(x == '3' || x === y) && !(y != 8 && x <= y)
Hay 2 tipos de datos especiales que también se usan frecuentemente en JavaScript: null y undefined.
Indica explícitamente que la variable no tiene valor.
var estoEsNulo = null;
Indica que la variable no tiene valor definido. Por ejemplo, si le asignamos el valor undefined
explícitamente o sólo la declaramos, sin inicializarla.
var conValorIndefinido = undefined;
var variableSoloDeclarada; // undefined
Expresa el resultado de un cálculo matemático que no puede ser representado númericamente.
var dividirPorString = 24 / "Hola"; // NaN
Podemos convertir los datos a otros tipos de forma explícita o implícita.
Esto último se conoce como coerción de tipos.
var unNumero = 5;
var unCaracter = String(unNumero);
var unNumero = 5;
/*
en este caso, el operador + está concatenando Strings,
luego de convertir el tipo de unNumero
*/
var unCaracter = unNumero + '';
// Esto es un comentario simple
/*
Los que se enamoran de la práctica sin la teoría
son como los pilotos sin timón ni brújula,
que nunca podrán saber a dónde van
Leonardo Da Vinci
*/
Un array
es una colección ordenada de valores heterogéneos (de cualquier tipo).
var unArregloVacio = [];
var unArregloDeNumeros = [1, 2, 3];
var unArregloDeCosas = [3.7, 2, 'JavaScript', [48, 7]];
Primer elemento: [0]
unArregloDeNumeros[0]; // 1
Último elemento: [longitud del arreglo - 1]
var ultimaPosicion = unArregloDeNumeros.length - 1;
unArregloDeNumeros[ultimaPosicion]; // 3
Nota: los índices de los arrays empiezan en 0.
var unArregloDeNumeros = [19, 8, 3];
unArregloDeNumeros[1] = 7.5; // [19, 7.5, 3];
unArregloDeNumeros.push('FCC'); // [19, 7.5, 3, 'FCC'];
unArregloDeNumeros.pop(); // 'FCC';
También podemos acceder a los caracteres de un String
usando índices (como si fuera un Array
de caracteres), pero no podemos modificarlo (los Strings
en JavaScript son inmutables).
Si quisiéramos hacerlo, tendríamos que convertirlo primero a Array
, operar y luego pasarlo a String
nuevamente.
var unString = 'Puedo acceder a los caracteres de este texto, pero no modificarlo';
console.log(unString[2]); // e
console.log(unString.toSplit(' ')); // e
Son colecciones no ordenadas de pares clave-valor.
Contienen propiedades, que pueden ser valores de cualquier tipo, arrays, funciones o incluso otros objetos.
var unLibroRecomendado = {
titulo: 'Eloquent JavaScript',
autor: 'Marijn Haverbeke',
paginas: 472
};
unLibroRecomendado.titulo; // 'Eloquent JavaScript'
unLibroRecomendado.autor; // 'Marijn Haverbeke'
unLibroRecomendado.paginas; // 472
unLibroRecomendado.titulo = 'JavaScript Elocuente';
unLibro.fechaDePublicacion = '14 de Diciembre de 2014';
Nos permiten decidir qué camino seguir, según las condiciones que evaluemos.
if (condición booleana) {
// se ejecuta si la condición es verdadera
} else {
// se ejecuta si la condición es falsa
}
var edad = 16;
/*
solo las personas que sean mayores a 18 años
pueden entrar al boliche
*/
if (edad > 18) {
console.log('Puede entrar al boliche');
} else {
console.log('No puede entrar al boliche');
}
Son aquellos valores que se interpretan como falsos si se evalúan en el contexto de una expresión booleana.
false
null
undefined
''
0
NaN
Todos los valores que no se encuentren en la lista anterior (falsy values), son verdaderos.
var paquetesGalletitas = 0;
// en este caso nuestra variable se evaluará por verdadero o falso
if (paquetesGalletitas) {
console.log('Todavía hay galletitas');
} else {
console.log('Hay que ir a comprar Oreos');
}
Nos permiten iterar sobre diferentes colecciones de valores, como arreglos u objetos.
También iterar hasta que ciertas condiciones se cumplan o no.
Se ejecuta hasta que la condición booleana sea falsa.
var i = 0;
while (i < 5) {
console.log('Iteración N° ' + i);
i++;
}
Se ejecuta siempre al menos una vez, independientemente de que la condición booleana sea verdadera.
var i = 0;
do {
console.log('Iteración N° ' + i);
i++;
} while (i < 5);
Se ejecuta hasta que la condición booleana sea falsa y consiste en tres expresiones opcionales
for (expresión inicial; condición; expresión final) {
...
};
expresión inicial:
declaramos una variable como contadorcondición:
expresión evaluada antes de cada iteraciónexpresión final:
expresión evaluada al final de cada iteración
for (var i = 0; i < 10; i++) {
console.log('Iteración N° ' + i);
}
var animales = ['Perro', 'Gato', 'Tortuga'];
// Recorremos el array animales y mostramos cada uno
for (var i = 0; i < animales.length; i++) {
console.log('Las mascotas disponibles son: ' + animales[i]);
}
Son bloques de código con nombre, reutilizables. Pueden recibir (o no) parámetros.
function nombreFuncion(primerParametro, segundoParametro) {
...
}
// devuelve la suma entre a y b
function sumarDosValores(a, b) {
return a + b;
}
sumarDosValores(2, 4);
// devuelve el total con solo 2 decimales
function imprimirTotal(total) {
return total.toFixed(2);
}
imprimirTotal(10.6533);
Los callbacks no son una característica de JavaScript. Son una manera de usar las funciones.
Si queremos ejecutar enviarMensaje()
debemos de esperar a que las instrucciones anteriores finalicen su operación.
Es decir que hasta no se termine de ejecutar descargarFoto()
no podremos ejecutar nada más.
var foto = descargarFoto('https://google.com/logo.png');
subirFotoTwitter(foto);
enviarMensajeTwitter('Hey! Cuando nos juntamos?', '@leogln_');
Ahora podremos ejecutar enviarMensajeTwitter()
mientras se descarga la foto, y que la suba a Twitter cuando esta finalice de descargar.
descargarFoto('https://google.com/logo.png',
function finalizoDescarga(error, png) {
if (error) {
console.log('error: ', error);
} else {
subirFotoTwitter(png);
}
});
enviarMensajeTwitter('Hey! Cuando nos juntamos?', '@leogln_')
Es el ámbito o alcance de una variable, donde esta 'vive' y desde donde puede ser accedida y modificada.
var
el scope está ligada a una funciónlet
yconst
tienen alcance dentro de un bloque de código
En JavaScript podemos declarar variables sin usar var, let o const, ¡pero el scope pasa a ser global!
Esto significa que la variable puede ser accedida y modificada desde cualquier parte de nuestro código.
var saludo = 'Bienvenidos! al evento';
function saludar() {
console.log(saludo);
}
saludar(); // Bienvenidos! al evento
console.log(saludo); // Bienvenidos! al evento
function saludar() {
var saludo = 'Bienvenidos! al evento';
console.log(saludo);
}
saludar(); // Bienvenidos! al evento
console.log(saludo); // ReferenceError: saludo is not defined
var animales = ['Perro', 'Gato', 'Tortuga'];
for (var i = 0; i < animales.length; i++) {
console.log('Las mascotas disponibles son: ' + animales[i]);
}
console.log(i); // 3
const animales = ['Perro', 'Gato', 'Tortuga'];
// Recorremos el array animales y mostramos cada uno
for (let i = 0; i < animales.length; i++) {
console.log('Las mascotas disponibles son: ' + animales[i]);
}
console.log(i); // ReferenceError: i is not defined
Algunos recursos gratuitos recomendados