1 Conceptos Basicos Javascript
1 Conceptos Basicos Javascript
1
Javascript
2
EcmaScript
• Lo que se conoce como JavaScript es en realidad una
implementación de ECMAScript, el estándar que define
las características de dicho lenguaje.
• Fiddle: https://jsfiddle.net/
• Plunker: https://plnkr.co/
5
Chrome devtools
• https://developers.google.com/web/tools/chrome-
6
devtools?hl=es
Integrar Javscript en el HTML
• Tenemos dos formas de incorporar código javascript en una
página HTML, pero siempre usando la etiqueta <script>:
• Dentro del mismo código HTML:
...
<body>
<script>
console.log("Hola Mundo!");
8
Funciones de salida
• console.log(texto) y console.error(texto)
• alert(texto)
• Método del objeto window del DOM que muestra una ventana
emergente con el texto indicado.
9
Funciones de entrada
• Los siguientes métodos pertenecen al objeto window del
DOM, que tenemos disponible en cualquier punto de la
ejecución de nuestros scripts:
• confirm(texto)
• Muestra una ventana emergente con el texto indicado y con los botones de
OK y CANCEL
• Se utiliza para los mensaje de confirmación ante una acción.
• Devolverá true o false dependiendo del botón pulsado.
• document.write(texto):
• Escribe el texto recibido en el documento.
• Se suele utilizar junto con código HTML para que el navegador lo interprete 10
como tal y le de formato o estilo.
Errores de sintaxis
• En la solapa consola de las herramientas de desarrollador nos
aparecerán los errores sintácticos que cometamos.
• El error aparecerá cuando el interprete trate de ejecutar la
instrucción que contenga el error
• En el error nos indicará el fichero y la línea donde se produzca
11
Ejercicio 1
• Para hacer algunos de los ejercicios usaremos como base el libro de
javascript publicado por Javier Eguiluz en el siguiente enlace:
• https://uniwebsidad.com/libros/javascript
• https://uniwebsidad.com/libros/javascript/capitulo-2
function printHello() {
console.log(hello);
var hello = "Hello World";
}
printHello(); // Esto imprimirá undefined
15
Transformación de código
function printHello() {
var hello = undefined;
console.log(hello);
hello = "Hello World";
}
printHello(); 16
Variables let mejor que var
• Código con var:
if (2 > 1) {
var nombre = "Pablo";
console.log("Nombre dentro:", nombre); // Imprimirá Pablo
}
console.log("Nombre fuera:", nombre); // Imprimirá Pablo
17
• El comportamiento con let es mucho más lógico
Variables let mejor que var
• Con var:
for(var i = 0; i<=10; i++) {
console.log(i);
}
• Con let:
for(let i = 0; i<=10; i++) {
console.log(i);
}
console.log(i); // Nos devolverá Error!.
18
Tipos de variables
• typeof: Indica el tipo de dato que en ese momento tiene la
variable.
let v1;
console.log(typeof v1); // Imprime -> undefined
if (v1 === undefned) { // (!v1) or (typeof v1 === "undefned") también funciona
console.log("Has olvidado darle valor a v1"); 19
}
Ejercicio 2
• Realizaremos ahora el ejercicio 2 del libro de javascript:
• https://uniwebsidad.com/libros/javascript/capitulo-3/tipos-de-variables
20
Arrays
• En JavaScript, los arrays son un tipo especial de objetos.
• Podemos crear un array con la instancia de un objeto de clase Array.
• Estos no tienen un tamaño fijo, por tanto, podemos inicializarlo con
un tamaño y luego añadirle más elementos.
• El constructor puede recibir 0 parámetros (array vacío), un número
23
Reducir la longitud de un array
• Podemos reducir la longitud del array modificando
directamente la propiedad length.
• Si reducimos la longitud de un array, las posiciones mayores a
la nueva longitud serán consideradas como undefined.
24
Creación alternativa
• Puedes crear un array usando corchetes en lugar de usar new
Array().
• Los elementos que pongamos dentro, separados por coma
serán los elementos que inicialmente tendrá el array.
25
Ejercicio 3
• Vamos a hacer el ejercicio 3 del libro de Javier Eguiluz:
• https://uniwebsidad.com/libros/javascript/capitulo-3/tipos-de-variables
26
Tipos de datos numéricos
(number)
• En Javascript no hay diferencia entre números enteros y
decimales (float, double).
27
Los números son objetos
30
Ejemplos de cast implicito
let a = 3;
let b = "asdf";
let r1 = a * b; // b es “asdf”, y no será transformado a número
console.log(r1); // Imprime NaN
let c;
31
Valores undefined y null
• En JavaScript cuando una variable (o parámetros de una
función) han sido creados sin asignarles un valor, es
inicializada con el valor especial undefined.
• No deberíamos confundir undefined con null.
• La segunda es un tipo de valor, que explícitamente asignas a
32
Boolean
33
Strings
34
Comillas en los strings
• Cuando el string se encuentra dentro de comillas dobles,
podemos usar comillas simples dentro y viceversa.
• Sin embargo, si quieres poner comillas dobles dentro de una
cadena declarada a su vez dentro de comillas dobles, necesitas
escaparlas para no cerrar el string previo, ocurriria lo mismo si
35
El objeto String
• Como en el caso de los números, los strings son objetos y tienen algunos métodos útiles que podemos utilizar.
• Todos estos métodos no modifican el valor de la variable a menos que la reasignes.
let s1 = "32";
let s2 = "14";
console.log(Number(s1) + Number(s2)); // Imprime 46 38
console.log(+s1 + +s2); // Imprime 46
Conversión de tipo explicita
(Booleano)
• La conversión de un dato a booleano se hace usando la
función Boolean(value).
• Puedes añadir !! (doble negación), antes del valor para forzar
let v = null;
let s = "Hello";
console.log(Boolean(v)); // Imprime false 39
console.log(!!s); // Imprime true
Operadores. Suma ‘+’
• Este operador puede usarse para sumar números o concatenar
cadenas.
• Pero, ¿Qué ocurre si intentamos sumar un número con un string, o
algo que no sea un número o string?
• Veamos los ejemplos:
41
Operadores aritméticos
43
Operador cambio de signo
• Podemos usar los signos – y + delante de un número para
cambiar o mantener su signo.
• Si aplicamos estos operadores con un dato que no es un
número, este será convertido a número primero.
• Por eso, es una buena opción usar +value para convertir a
let a = "12";
let b = "13";
let c = true;
console.log(a + b); // Imprime "1213"
console.log(+a + +b); // Imprime 25 (12 + 13)
console.log(+b + +c); // Imprime 14 (13 + 1). True -> 1 44
Operadores relacionales
• El operador de comparación, compara dos valores y devuelve un
booleano (true o false)
• Estos operadores son prácticamente los mismos que en la mayoría
de lenguajes de programación, a excepción de algunos, que veremos
a continuación.
48
Funcionamiento
• Se puede usar el operador &&, o el operador || con valores
que no son booleanos, pero se puede establecer equivalencia.
• El operador ||, al encontrarse un true o equivalente, lo
devolverá sin seguir evaluando el resto.
• El operador && al evaluar las condiciones, si alguna de ellas es
• https://uniwebsidad.com/libros/javascript/capitulo-3/operadores
52
Ejercicio 5
• Vamos a realizar el ejercicio 5 del libro de Javier Eguiluz:
• https://uniwebsidad.com/libros/javascript/capitulo-3/estructuras-de-control-de-flujo
• https://uniwebsidad.com/libros/javascript/capitulo-3/estructuras-de-control-de-flujo
55
• Otros los estudiaremos con más detenimiento más adelante
Funciones globales para
trabajar con números
• parseInt(value)
• Transforma cualquier valor en un entero.
• Devuelve el valor entero, o NaN si no puede ser convertido.
• parseFloat(value)
57
Funciones globales para
trabajar con strings
• String(value)
• Convierte un valor en un string.
• encodeURI(string)
• Transforma una cadena en una URL codificada, codificando caracteres
especiales a excepción de: , / ? : @ & = + $ #.
• decodeURI(string)
61
Ejercicio 8
62
Condicional múltiple (switch)
• Similar a otros lenguajes de programación.
• Se evalúa una variable y se ejecuta el bloque correspondiente al valor
que tiene (puede ser numero, string,..).
• Al final de cada bloque pondremos la instrucción break, ya que, de no
ponerlo continuaría ejecutando las instrucciones que haya en el
siguiente bloque.
let userType = 1;
switch(userType) {
case 1:
case 2: // Tipos 1 y 2 entran aquí
console.log("Puedes acceder a esta zona");
break;
case 3:
console.log("No tienes permisos para acceder aquí");
break;
default: // Ninguno de los anteriores
console.error("Tipo de usuario erróneo!");
} 63
Switch con condiciones
• En JavaScript puedes hacer que el switch se comporte como un if.
• Esto se hace evaluando un booleano (normalmente true) en lugar de
otro tipo de valor, de forma que en el case se evalúan condiciones
let value = 1;
67
Do … while
let value = 1;
do { // Imprime 1 2 3 4 5
68
Ejercicio 10
• Vamos a modificar el ejercicio 8:
• Si el usuario introduce un valor erróneo en el tipo de conversión,
se le volverá a pedir el tipo de conversión.
• Si el usuario introduce un importe erróneo, se le volverá a pedir
el importe.
69
for
let limit = 5;
for (let i = 1; i <= limit; i++) { // Imprime 1 2 3 4 5
console.log(i);
}
71
Ejercicio 11
• Vamos a realizar el ejercicio 7 del libro de Javier Eguiluz:
• https://uniwebsidad.com/libros/javascript/capitulo-3/estructuras-de-control-de-flujo
• https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/String
73
For .. in
• Otra versión del for, es el bucle for..in.
• Con este bucle podemos iterar los índices de un array o las
propiedades de un objeto (similar al bucle foreach de otros
lenguajes, pero recorriendo los índices en lugar de los
valores).
74
Ejercicio 13
• Crea un array que contenga los nombres de los días de la
semana.
• Muestra todos los elementos del array por consola,
recorriéndolo con un bucle for … in
76
Ejercicio 14
• Crea un string que contenga tu nombre
• Utilizando un bucle for … of crea otro string que contenga tu
nombre al revés.