CORE 03 JavaScript Cliente Mod-3
CORE 03 JavaScript Cliente Mod-3
Introducción a JavaScript
Juan Quemada, DIT - UPM
1
© Juan Quemada, DIT, UPM
Índice
MODULO 3 - Introducción a JavaScript
1. Introducción a JavaScript (ES6+) de cliente, expresiones y la consola .......................................... 3
2. Programas, sentencias var, let, const, y ops ++, --, +=, -=, .. ........................................................... 15
3. Ejecución de scripts, funciones, objeto función, notación arrow y ámbitos …................................... 25
4. Objetos, propiedades, métodos, DOM, eventos e interacción .......................................................... 36
5. Booleanos, sentencias if-else, switch-case y bucles ............…......................................................... 50
6. Arrays .......................................................................................................…..................................... 56
3
© Juan Quemada, DIT, UPM
JavaScript
Lenguaje de programación diseñado en 1995 por Brendan Eich
n Para animar páginas Web y realizar aplicaciones en el Navegador Netscape
w Hoy se ha convertido en el lenguaje de programación más utilizado en Internet
5
© Juan Quemada, DIT, UPM
Tipo number: números y operadores
JavaScript permite construir expresiones con operadores predefinidos
n +, -, * y / son operadores binarios (2 valores) infijos (operador en el centro)
w La evaluación (=>) de la expresión genera otro valor como resultado
Doc: https://developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps/Math
6
© Juan Quemada, DIT, UPM
La consola JavaScript del navegador (Chrome)
8
© Juan Quemada, DIT, UPM
Tipo string: texto
El texto escrito se representa en JavaScript con strings
n Un string delimita el texto con comillas, apóstrofes o acento grave, por ej.
w "hola, que tal" o 'hola, que tal' // Las comillas y apóstrofes solo permiten strings mono-línea
w `hola,
que tal` o `hola, que tal` // El acento grave permite strings multi-línea y mono-línea
Algunos ejemplos
n "entre 'comillas' " o `entre 'comillas' ` // 'comillas' es parte del texto
n String vacío: "" o '' o ``
Doc: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String
9
© Juan Quemada, DIT, UPM
Ejemplos de string
Suma de números
n Operador binario de números (tipo number), infijo (operador en medio)
13 + 7 => 20
Signo de un número
n Operador prefijo unario de número que define el signo positivo de un número
+13 => 13
Concatenación de strings
n Operador binario de cadenas de caracteres (tipo string), infijo (op. en medio)
11
© Juan Quemada, DIT, UPM
Conversión de tipos
12
© Juan Quemada, DIT, UPM
La prioridad de los operadores es descendente y de izquierda a derecha. (Mayor si más arriba o más a izq.)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence
Define la variable
euro con valor 10
Visualizan en el
navegador el
resultado de
evaluar las Separación de
expresiones línea HTML
17
© Juan Quemada, DIT, UPM
Definición y asignación de variables
Una variable es un contenedor de un valor, cuyo contenido puede variar
Las variables JavaScript son no tipadas y pueden contener cualquier tipo de valor
n Pueden contener números, strings, undefined, objetos, ..
La sentencia de definición de variables debe empezar por la palabra reservada let (ES6+)
n Seguida de una o más definiciones de variables separadas por comas
w En ES5 se utilizaba var pero ahora no se recomienda utilizarlo
20
© Juan Quemada, DIT, UPM
Expresiones con variables
Una variable representa el valor que contiene
n Puede ser usada en expresiones como cualquier otro valor
Una variable puede utilizarse en una expresión asignada a si misma
n La parte derecha usa el valor anterior a la ejecución de la sentencia
w Si y contiene 8 antes de ejecutar y = y - 2, esta asigna el valor 6 (8-2) a y
x
let x = 3; 3 y
let y = 5 + x; 8
y = y - 2;
6
x = y + z;
Error El error se produce porque la
variable z no ha sido definida.
21
© Juan Quemada, DIT, UPM
Pre y post auto incremento o decremento
JavaScript posee los operadores ++ y -- de auto-incremento o decremento
n ++ suma 1 y -- resta 1 a la variable a la que se aplica
w ++ y -- se pueden aplicar por la derecha o por la izquierda a las variables de una expresión
n Si ++/-- se aplica por la izquierda a la variable (pre), el incremento/decremento se realiza antes de
evaluar la expresión
n Si ++/-- se aplica por la derecha (post) se incrementa/decrementa después de evaluarla
n Ojo! Usar con cuidado, sus efectos laterales llevan a programas difíciles de entender.
Documentación adicional
n https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators
x
let x = 2; 2 Al ser pre-incremento el
orden de ejecución es:
++x 3 1) Paso 3.1: x=x+1 Con post-decremento el
de ejecución orden es:
2) Paso 3.2: y=x+2
1) Paso 4.1: z=y+2
let y = ++x + 2; Paso 3.1
4 y 2) Paso 4.2: y=y-1
Paso 3.2
6
z
let z = y-- + 2; Paso 4.1
8
Paso 4.2 5
22
© Juan Quemada, DIT, UPM
Operadores de asignación
JavaScript tiene operadores especiales de asignación
n +=, -=, *=, /=, %=, …… (para otros operadores del lenguaje)
w https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators
x
let x = 3; // Create x with value 3
3
x += 2; // add 2 to x 5
x *= 3; // multiply x by 3 15
x %= 4; // reminder of dividing by 4 3
23
© Juan Quemada, DIT, UPM
Ventanas popup: prompt, confirm y alert
JavaScript incluye tres funciones globales para interactuar con el usuario
n alert(msj): Presenta un pop-up con mensaje al usuario y retorna al pulsar OK
n confirm(msj): Presenta un pop-up con mensaje y pide confirmación/rechazo
w Retorna al pulsar y devuelve true al pulsar Ok o false al pulsar Cancel
n prompt(msj): Presenta mensaje y pide un dato de entrada
w Retorna al pulsar OK (devuelve string introducido) o Cancel (devuelve null)
Este ejemplo pide un valor con prompt() y muestra el resultado con alert()
26
© Juan Quemada, DIT, UPM
Varios scripts
Varios scripts en una página
forman un único programa
JavaScript
n Las definiciones (variables, funciones,
…) son visibles entre scripts de una
misma página Web
27
© Juan Quemada, DIT, UPM
Función Definición de la función
de retorno
greet ("Good morning", "Peter"); // => "Good morning Peter, how are you?"
greet ("Hi", "Peter"); // => "Hi Peter, how are you?"
greet ("Hi", "Peter", "John"); // => "Hi Peter, how are you?"
greet ("Hi"); // => "Hi undefined, how are you?"
greet (); // => "undefined undefined, how are you?"
30
© Juan Quemada, DIT, UPM
arguments: el array de parámetros
function greet () {
return `${arguments[0]} ${arguments[1]}, how are you?`;
};
greet ("Good morning", "Peter"); // => "Good morning Peter, how are you?"
const x = greet;
const say_hi = () => "Hi, how are you?"; // function without parameters
© Juan Quemada, DIT, UPM 34
x
let x = "x_glo"; "x_glo" y
let y = "y_glo";
Declaraciones
"y_glo"
function f1 () { x
locales de una let x = "x_loc";
return x + " & " + y ;
"x_loc"
función y ámbito };
// global variable
x; // => "x_glo"
Documentación: https://javascript.info/object-basics
screen document o o o o o o
history undefined Infinity
o o o o o o o o o o o o
HTML
HEAD BODY
o o o o o o
Este entorno global da también acceso a las numerosas APIs del navegador actual
n DOM, Canvas, Fetch, Storage, Full Screen, Touch Events, Service Workers, WebRTC, WebGL, ..
w https://developer.mozilla.org/en-US/docs/Web/API
document da acceso a la página HTML con la API DOM (Document Object Model)
n document se referencia como: window.document, this.document o document
w Doc: https://javascript.info/dom-nodes, https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model
38
© Juan Quemada, DIT, UPM
Acceso DOM y cajas visuales
Objetos DOM (Document Object Model)
n Objetos JavaScript que permiten manipular elementos HTML desde un programa
Objeto DOM: tiene una caja visual asociada
n Las modificaciones afectarán a la caja visual del elemento HTML asociado
w La caja visual asociada a comandos CSS es la misma que la asociada a DOM
document.getElementById("id_x")
n Método que obtiene el objeto DOM del elemento HTML con atributo id="id_x"
document
n Objeto del entorno que da acceso al documento HTML
getElementById("titulo")
n Método que retorna el objeto DOM del elemento HTML con id="titulo"
innerHTML
n Propiedad con el HTML interno asociado a ese objeto DOM
© Juan Quemada, DIT, UPM 40
HTML interno y externo
HTML interno: texto HTML contenido entre las marcas del elemento
n innerHTML: propiedad del objeto DOM que da acceso al HTML interno
HTML externo: texto HTML completo del elemento (incluyendo sus marcas)
n outerHTML: propiedad del objeto DOM que contiene el HTML externo
innerHTML
outerHTML
Modificar
HTML
mostrado
document.getElementById("titulo").innerHTML="Cambio";
Modifica el HTML y por lo tanto lo que se muestra en el navegador.
42
© Juan Quemada, DIT, UPM
window
screen document o o o
history location navigator
o o o o o o o o o o o o
HTML
BODY
Location, history,
HEAD
o o o o o o screen, ...
location: propiedad que contiene el URL a la página en curso
n location = "http://www.upm.es" Carga una página en el navegador
n location.reload() re-carga la página en curso
w Doc: https://developer.mozilla.org/en-US/docs/Web/API/Window/location
history: propiedad con la historia de navegación
n Métodos para navegar por la historia: history.back(), history.forward(), ...
w Doc: https://developer.mozilla.org/en-US/docs/Web/API/Window/history
screen: dimensiones de la pantalla
n width, height, availWidth, availHeight: para adaptar apps a pantallas móviles
w Doc: https://developer.mozilla.org/en-US/docs/Web/API/Window/screen
43
© Juan Quemada, DIT, UPM
Propiedades de
window
44
45
© Juan Quemada, DIT, UPM
Mini-calculadora: eventos y manejadores
Eventos: se disparan al ocurrir acciones exteriores al programa, p.e. teclear, pulsar botón, ..
n Tienen funciones asociadas que permiten atender al evento
w Eventos: http://librosweb.es/libro/javascript/capitulo_6/modelo_basico_de_eventos_2.html
El atributo onclick="fx()"
n Asocia fx() al elemento HTML con el atributo
w Ejecuta fx() al clicar en la caja visual del elemento
46
47
© Juan Quemada, DIT, UPM
document y sus métodos de acceso
document
n Objeto DOM de acceso al documento HTML
w Incluye los métodos y propiedades necesarios para procesar el documento HTML
n https://developer.mozilla.org/en/docs/Web/API/Document
getElementById("<id>")
n Devuelve el objeto DOM con el identificador buscado o null si no lo encuentra
w https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementById
querySelectorAll("<CSS_selector>")
n Devuelve el array de objetos DOM que casan con <CSS_selector>, por ej.
w querySelectorAll("#id1”) array con objeto DOM del elemento con id="id1", si existe
w querySelectorAll(".cl1”) array con objetos de todos los elementos con class="cl1"
w querySelectorAll("h1.cl1”) array con objetos de todos los elementos <h1 class="cl1">
n https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll
48
© Juan Quemada, DIT, UPM
Ejemplo de querySelectorAll (..)
querySelectorAll("<patrón>") devuelve un array de objetos DOM
n El array incluye todos los objetos DOM de elementos HTML que cumplen el patrón
w El array estará vacío si ningún elemento HTML casa con el patrón.
<div id="date"></div>
define un bloque vacío donde
añadir la fecha por programa.
<div id="msg"></div>
define un bloque vacío donde
añadir un mensaje por progr.
querySelectorAll(..) devuelve un
array con un único objeto DOM.
Hay que indexarlo con [0].
© Juan Quemada, DIT, UPM 49
Booleanos, sentencias if-else,
switch-case y bucles
Juan Quemada, DIT - UPM
50
© Juan Quemada, DIT, UPM
Tipo boolean Los operadores lógicos booleanos son:
negación: ! !true => false
El tipo boolean tiene 2 valores !false => true
n true: verdadero
operador y: && true && true => true
n false: falso true && false => false
Booleanos: permiten crear expresiones lógicas false && true => false
false && false => false
n Utilizando los operadores lógicos
operador o: || true || true => true
((x % 2) === 0) indica si el resto de true || false => true
dividir x por 2 es 0, es decir si x es par. false || true => true
false || false => false
Estos dos bucles son equivalentes. Calculan 2n (2*2*…*2, una multiplicación en cada iteración). Tienen 3 partes:
1) Iniciación del bucle: define e inicia las variables n y res utilizadas para el cálculo y para control del bucle.
2) Condición de permanencia: indica si el bucle se debe seguir ejecutando o finalizar.
3) Acciones del bucle: instrucciones ejecutadas en cada vuelta al bucle. Se delimitan con llaves {}, salvo en
bloques de una sentencia, en que las llaves pueden omitirse.
54
© Juan Quemada, DIT, UPM
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Loops_and_iteration
STATEMENT SINTAX DESCRIPCIÓN DE LA SENTENCIA JAVASCRIPT
55
© Juan Quemada, DIT, UPM
Arrays
Doc: https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array
© Juan Quemada, DIT, UPM 57
Sumatorio
de
números
En este
bucle se
suman los
números
Ilustra el uso de bucles para procesar arrays del array
obtenido
n Con la función sumatorio de n números: Σ x
con split().
El sumatorio de los números 1, 2, 3, 4 es:
n Σ (1, 2, 3, 4) = 1 + 2 + 3 + 4 = 10
El método split(",") transforma un string en un array con los substrings separados "," (coma).
Por ejemplo, "1, 2, 3, 4". split(",") => ["1", " 2", " 3", " 4" ]
Mas info: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split