APUNTE Lenguaje JavaScript
APUNTE Lenguaje JavaScript
Imagina que html es el esqueleto de una página web. css es la piel y JavaScript es el
cerebro, es el que da vida a un sitio web (no solo JavaScript, también hay otros
lenguajes como php).
Introducción JavaScript
Veremos lo basico de JavaScript vanilla (javascript puro sin frameworks o
bibliotecas), variables, condicionales, bucles, arrays, etc.
Por lo que primero que debemos es descargar Visual Studio Code para que
podamos empezar a trabajar.
<body>
</body>
</html>
HTML
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Ubicación del código en JavaScript</title>
</head>
<body>
<script>
let num1 = 10;
alert(num1);
</script>
</body>
</html>
HTML
Copiar
El resultado es el mismo:
Ejecutar código JavaScript desde una hoja .js externa
La siguiente opción es hacer una página externa con extensión .js y empezar a
escribir en ella. Es como lo que hacemos con CSS. Luego, solo tienes que enlazarla
para poder utilizar todo el código JavaScript en cualquier página html.
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Ubicación del código en JavaScript</title>
<script src="test.js"></script>
</head>
<body>
</body>
</html>
HTML
Copiar
Archivo JS
JavaScript
Copiar
Nuevamente, el resultado es el mismo. Piensa que tienes que ejecutar la página
html en el navegador. Este se encargará de ejecutar el código js.
let PRIMERAVARIABLE;
let primeravariable;
JavaScript
Copiar
A partir de ahora, a no ser que lo requiera, voy a poner solo el código js. Doy por
sentado que ya sabes donde lo tienes que poner. Si no es así, mira los vídeos de
cada capítulo o déjame comentarios para que resuelva tus dudas.
alert ( primeraVariable ) ;
JavaScript
Copiar
Esto funciona perfectamente, JavaScript entiendo que esos espacios no son nada,
por lo tanto, los ignora.
Por supuesto, esto es una mala práctica. Hay que escribir código limpio y óptimo.
Este sería el equivalente al código anterior pero bien escrito.
En este tercer capítulo, dejamos atrás las introducciones para ir de lleno con el
código. En este caso empezamos por lo más básico de todo lenguaje, las
variables, siempre presentes.
¿Qué son las variables?
Una variable es un contenedor lógico que almacena datos de todo tipo, es decir,
información. Cada lenguaje de programación lleva los suyos, números enteros,
decimales, texto, etc.
Su nombre dice mucho de ellas, ya que una variable está diseñada para variar,
inicialmente en tu código puede tener un valor e ir cambiando durante toda la
ejecución de este.
JavaScript
Copiar
JavaScript
Copiar
Estas dos variables tienen ahora un tipo de dato de texto, color1 tiene el valor
de "Rojo" y color2, "Verde". Esto solo es texto plano, no son colores, es solo un
ejemplo de texto para que veas como se guardan datos en las variables. También,
en el capítulo anterior viste como guardar un número.
Los datos de tipo texto se escriben entre comillas en las variables.
Antes de seguir con el tema de las variables, ten en cuenta que hay que terminar
cada línea con un punto y coma, de ese modo, se separan, ya que recuerda que
ignora los espacios en blanco. Sin el punto y coma, el código anterior sería así
para el navegador:
Hay veces en los que no te va a dar error si te dejas alguno sin poner. Pon
atención a esto, ya que es una de las causas de error más comunes.
Más adelante verás que se puede trabajar (no desde siempre) sin poner los
puntos y coma, de momento, acostúmbrate a usarlos.
Otro detalle sobre el punto y coma. También puedes hacer esto, separar
diversas líneas en la misma línea con punto y coma, el resultado es el
mismo, pero esto no es una buena práctica, así que te recomiendo que
no lo hagas.
// Mala práctica.
var color1 = "Rojo"; let color2 = "Verde";
JavaScript
Copiar
¿Cómo mostrar el valor de una variable de JavaScript en el
navegador?
Lo puedes hacer de varias formas, una que ya sabes del capítulo anterior es con
la función alert().
alert(color1);
JavaScript
Copiar
El resultado es que me devuelve en el alert() el valor de la variable color1.
Una vez está declarada la variable (pones var o let y el nombre), no tienes que
volver a repetir let o var para darle un nuevo valor.
alert(color1);
JavaScript
Copiar
El resultado es que me devuelve en el alert() el valor Azul, el cuál ha sustituido
a Rojo. Esto lo puedes hacer cuantas veces quieras. Pero recuerda, let o var es
solo para crear la variable, luego no tienes que utilizarlo de nuevo en la misma
variable.
El flujo de ejecución de
JavaScript
El flujo de ejecución del código va de arriba abajo en JavaScript. Se ejecuta
primero esta línea, var color1 que tiene el valor Rojo. En el momento que
llegamos a la segunda línea, color1 tiene un valor de Azul y ha perdido ese
valor Rojo. Finalmente, se lee la última línea, la del alert() en la que ve que en
ese momento color1 es igual a Azul.
Probemos esto con dos alert() que muestren el valor de color1 en los diferentes
momentos.
color1 = "Azul";
alert(color1);
JavaScript
Copiar
El resultado es que me devuelve en el alert el valor Azul, el cuál ha sustituido
a Rojo. Esto lo puedes hacer cuantas veces quieras. Pero recuerda, let o var es
solo para crear la variable, luego no tienes que utilizarlo.
Hay formas de modificar el flujo de ejecución normal de JavaScript, por ejemplo,
con estructuras de control de flujo (condicionales). No hay prisa, aún faltan unos
cuantos capítulos para llegar a esto.
Vamos a ver varias cosas en este capítulo, los identificadores, las palabras
reservadas y las palabras clave (keywords) del lenguaje y la consola de
JavaScript.
Identificadores JavaScript
Un identificador es solo un nombre que identifica algo. Son nombres asignados
a objetos, variables, funciones, etc.
Obligatoriamente los identificadores deben comenzar o bien con una letra (a), con
una barra baja(_) o con el símbolo dólar ($). No podremos utilizar números como
primer carácter del nombre de un identificador u otros símbolos que no sean el del
dólar o el guion bajo.
Los otros caracteres del identificador pueden estar compuestos por un guión bajo
(_), un signo de dólar ($), letras (a) o números (1) , pero no pueden ser otros
símbolos. Tampoco puedes dejar espacios en medio del nombre.
JavaScript
Copiar
Aunque unos identificadores más confusos que otros, son todos válidos. Puedes
hacer la prueba con un alert(). Si te devuelve el valor undefined quiere decir que
es correcto, ya que estas variables no tienen un valor defined (definido). En cambio,
si las inicializas con un valor, debería salirte el valor en lugar del undefined.
¿Ves la gran diferencia? mientras que en los primeros ejemplos tenemos unos
nombres de variable (identificadores) muy entendibles, en los malos ejemplos cuesta
mucho más saber que es cada cosa.
Piensa que vas a declarar estas variables, les darás un valor y después tendrás que ir
utilizándolas en el código. Cuando tengas muchas variables, vas a tener que ir
subiendo a donde declaraste las variables para ver que valor inicial tienen y para que
son. También, si otros editan tu código, tendrán que revisarlo mucho para averiguar
lo que hace cada cosa.
Es muy fácil de utilizar, aquí tienes una mini leyenda según los colores que te
devuelve:
Seguiremos utilizando la consola durante todo el curso, así que es importante que
empieces a utilizarla.
En este quinto capítulo te voy a explicar el motivo por el cual tenemos dos
formas de declarar variables en JavaScript, var y let. Además, aprovecho para
enseñarte también las convenciones para escribir nombres de identificadores.
JavaScript
Copiar
Aquí lo que está pasando es que estoy redeclarando dos veces la misma variable.
Esto es posible con var. No ocurre lo mismo con let.
Palabra del lenguaje nº 5 encontrada.
console es un objeto que nos permite acceder a la consola de
depuración de los navegadores.
Palabra del lenguaje nº 6 encontrada.
log es un método perteneciente al objeto console. Muestra un mensaje
en la consola.
Lo de console.log es algo nuevo. Se trata del objeto console llamando al
método log de este. De forma que lo entiendas mejor, estamos indicando algo a
la consola de javascript, en este caso, que nos muestre un mensaje en ella
misma. Mostrará cualquier cosa que le pongamos, al igual que ocurre en
el alert().
En el propio documento html no se ve nada, ninguna ventanita ni nada escrito en
el <body>. Si abres la consola de JavaScript podrás ver lo que devuelve. En este
caso, aparece en la sección info . Si fuese un error, aparecería en la sección de
errores.
Ahora que ya conoces este método (ya explicaré lo que es un método), puedes
usarlo más a menudo que la función alert() (también explicaré lo que es una
función). La función alert(), más que para hacer pruebas como hemos estado
haciendo, está destinada a informar al usuario de algo, por ejemplo, un usuario
que introduce en un login un usuario o una contraseña incorrecta y la página le
informa en ese momento de su error.
Dicho esto, puedes escribir alert() para hacer pruebas igualmente, pero es más
práctico utilizar un console.log() para no tener que hacer click en el botón
aceptar de la ventanita.
Comprobemos si efectivamente me deja redeclarar variables con let.
JavaScript
Copiar
En este caso no funciona nada, en info de la consola no aparece nada y todo
queda en un error de sintaxis en la línea 3 que dice que el identificador color1 ya
está declarado. Efectivamente, estamos redeclarando una variable ya declarada.
Algo totalmente erróneo.
Puedes llegar a la conclusión de que se ha añadido let para sustituir a var. Ya
sabes, utiliza siempre mejor let.
Convenciones de escritura de
nombres en JavaScript
¿Qué es camelCase?
camelCase es la práctica de escribir varias palabras sin espacios o puntuación,
dejando la primera letra de cada palabra en mayúscula, excepto la primera (hay
excepciones, ahora las explico).
¿Qué es PascalCase?
PascalCase se trata de escribir los nombres sin separar, con la primera letra de
cada palabra en mayúsculas, incluida la primera, igual que UpperCamelCase.
JavaScript
NumeroUno
EdadUsuario
NumeroTelefono
¿Qué es snake_case?
snake_case es escribir todo en minúsculas y hacer separación de palabras con un
guion bajo (lo que llamo barra baja).
Esto está inspirado en una serpiente con su zigzagueo.
En este sexto capítulo vas a ver los tipos de datos en JavaScript, algo totalmente
imprescindible para saber tratarlos y evitar errores. También verás el tipado
de JavaScript.
Tipado de JavaScript
JavaScript es un lenguaje de tipado débil y dinámico. Lo que significa que a
diferencia de otros lenguajes como Java, que no tiene nada que ver con
JavaScript (lo que más se parece es el nombre), no tenemos que especificar el
tipo de dato que va a contener una variable. En el caso de JavaScript, no hay que
decirle nada, el tipo de dato de una variable se asocia directamente al dato que
contiene. De este modo, puede ir cambiando no solo de valor, si no que también
de tipo de dato.
Por ejemplo, en Java, para declarar una variable numérica lo hacemos así:
Código Java
int numero1;
Java
Copiar
Código JavaScript
let numero1;
JavaScript
Copiar
Como puedes ver, en Java no hay que utilizar una palabra como let o algo similar
para especificar la declaración de una variable. En este caso, se declara
especificando el tipo de dato que va a contener la variable. En Java, el tipo de
dato para almacenar números enteros es int. Además, si intentas poner otro tipo
de dato a esta variable de Java que no sea un entero, te va a dar un error.
Deberás transformar el tipo de dato (casting) si quieres almacenar otra cosa y eso
si son tipos de datos compatibles.
Habrás notado lo fácil que es en JavaScript, aquí tienes un ejemplo de una misma
variable cambiando de tipo de dato sin ningún problema y sin tener que hacer
nada en especial
Copiar
console.log(typeof(numero1));
console.log(typeof numero2);
JavaScript
Copiar
console.log(typeof(texto));
JavaScript
Copiar
console.log(typeof(existo));
JavaScript
Copiar
El tipo de dato primitivo bigint
console.log(typeof(numeroGigante));
console.log(typeof(otroNumeroGigante));
JavaScript
Copiar
Para que el valor lo identifique como bigint, hay que escribirlo con una n
al final del número o utilizando el constructor BigInt(). En este último
caso, no hay que escribir la n.
También ten en cuenta, que JavaScript es case sensitive y tienes que
escribir la B y la I de BigInt() en mayúsculas, si no, no funciona.
Palabra del lenguaje nº 16 encontrada.
BigInt es un constructor de JavaScript capaz de transformar un number
o un string en tipo de dato bigint. El string debe contener un número, si
no, no tiene sentido.
let variableSinDefinir;
console.log(variableSinDefinir);
JavaScript
Copiar
El tipo de dato null
JavaScript
Copiar
El tipo de dato object
Aún es pronto para hablar de los objetos, así que no le des mayor importancia
todavía.
let objeto = new Object();
console.log(objeto);
JavaScript
Copiar
En este séptimo capítulo vas a ver para que son los comentarios y cuales son las
formas de crearlos. Un tema muy simple pero importante.
Javascript tiene dos tipos de comentarios antiguos, es decir que llevan desde sus
inicios. El de una sola línea y el multilínea. También hay una tercera forma más
moderna que veremos al final de este capítulo.
JavaScript
Copiar
La primera línea está comentada. Si llamases a numero1 en un console.log() ¿qué
crees que pasaría?, ¿habría algo incorrecto o errores por estar declarada dos
veces la misma variable con let?
JavaScript
Copiar
Evidentemente, no hace falta que vayas escribiendo línea por línea lo que hace el
código. Cuando escriba código más complejo, algunas veces incluiré comentarios
y te harás una idea de cuando utilizar comentarios. Por ejemplo, si tienes tres
funciones en un código, pues escribes tres comentarios indicando brevemente lo
que hacen. Si están relacionadas, quizás te baste con un comentario.
La cuestión aquí es documentar el código para que cuando lo edites más
adelante o lo edite otra persona, sepa rápidamente donde está cada cosa y como
funciona. Mira si son importantes.
De esta forma, se anulan todas las líneas englobadas, no solo dos como en el
ejemplo, todas las que quieras.
JavaScript
Copiar
Otra mala práctica es incluir comentarios entre el propio código. Algo que puede
hacerlo más malo de leer y crear confusiones. Aquí tienes un ejemplo:
JavaScript
Copiar
#!
let numero1 = 77;
JavaScript
Copiar
JavaScript
Copiar
Desde luego, los comentarios hashbang no están hechos para anular una línea de
código aunque lo puedan hacer una sola vez por documento o fragmento de
código. Están diseñados para poder especificar la ruta a un intérprete de
JavaScript en concreto que ejecute todo el script. Aquí tienes un ejemplo:
#!/usr/bin/env node
JavaScript
Copiar
No profundicemos más en este tema de los hashbang hasta tener que utilizarlos.
De momento, utiliza solo el comentario multilínea y el de una sola línea.
Escape de caracteres en
JavaScript
¿Por qué hay varias formas de crear un string?
JavaScript
Copiar
Copiar
JavaScript
Copiar
Esto es un 'string'.
Plain text
Copiar
JavaScript
Copiar
Esto es un "string".
Plain text
Copiar
Si quieres utilizar las mismas comillas para mostrarlas literalmente, tienes otra
opción, el escape de comillas.
JavaScript
Copiar
Funciona igual con las otras comillas.
No las vamos a ver todas en este nivel del curso, ya que hay unas cuantas y
algunas más complejas que otras.
JavaScript
Copiar
JavaScript
Copiar
Esto se ha conseguido sin escribir una sola línea en el <body> del documento
html.
Puede que te hayas dado cuenta de que hay un fallo. Las líneas no se han
separado. El salto de línea (\n) ha sido ignorado. Esto ocurre, porque con
el document.write() es como si estuviéramos escribiendo en html. En html no
existe este salto de línea. Probemos esta teoría y pongamos una etiqueta
html <br>; a ver si funciona.
JavaScript
Copiar
JavaScript
Copiar
s
Plain text
Copiar
JavaScript
Copiar
E
Plain text
Copiar
Como puedes ver, podemos acceder a cualquier posición del string. Aún no le
verás más utilidad a esto que una simple práctica, no obstante, cuando
empecemos con los condicionales empezarás a verle más utilidad a esto.
Hay otra forma algo más corta de hacer esto mismo, especificando un número en
unos corchetes.
let texto1 = "Estamos viendo los strings."[8];
console.log(texto1);
JavaScript
Copiar
v
Plain text
Copiar
JavaScript
Copiar
E
Plain text
Copiar
JavaScript
Copiar
o
Plain text
Copiar
Esta vez, en lugar de almacenar una posición en la propia variable, que por otro
lado, acaba almacenando solo un carácter en la variable, pues puedo tener el
valor de la variable texto1 y guardar a parte para cualquier propósito el valor del
carácter devuelto.
Si el string de texto1 va cambiando, los valores que se guarden en guardaLetra no
cambian, se queda el valor del momento que se ejecutó. Aquí puedes apreciarlo:
let texto1 = "Estamos viendo los strings.";
let guardaLetra = texto1[0];
console.log(guardaLetra);
texto1 = "Cambiado.";
console.log(guardaLetra);
JavaScript
Copiar
E
E
Plain text
Copiar
En ningún momento toma el valor C del string del texto1 porque es algo que se
ejecuta a posteriori de la llamada a la posición 0 de guardaLetra. Esto es debido
al flujo y al tiempo de ejecución.
Integers en JavaScript
Dejamos un poco los strings para ir a por los tipos de datos numéricos.
Recuerda que para ponerlos en una variable, debemos hacerlo sin comillas:
JavaScript
Copiar
floats en JavaScript
Los float los indicamos con un punto, una coma daría un error:
let numero1 = 45.78;
JavaScript
Copiar
Operador Operación
La suma en JavaScript
El operador de suma de JavaScript, también conocido como operador de adición
y de concatenación, permite realizar sumas si tenemos dos valores numéricos.
console.log(resultadoOperacion);
JavaScript
Copiar
100
Plain text
Copiar
console.log(resultadoOperacion);
JavaScript
Copiar
-10
Plain text
Copiar
La multiplicación en JavaScript
El operador de multiplicación de JavaScript permite realizar multiplicaciones con
dos valores numéricos.
console.log(resultadoOperacion);
JavaScript
Copiar
2475
Plain text
Copiar
La división en JavaScript
El operador de división de JavaScript permite realizar divisiones con dos valores
numéricos.
console.log(resultadoOperacion);
JavaScript
Copiar
5
Plain text
Copiar
Los operandos (números con los que operas) podrán ser enteros, negativos,
positivos, decimales, etc. pero siempre van a devolver el tipo de dato que sea
necesario. Veamos un ejemplo:
console.log(resultadoOperacion);
JavaScript
Copiar
16.5
Plain text
Copiar
console.log(resultadoOperacion);
JavaScript
Copiar
17
Plain text
Copiar
console.log(operacion);
JavaScript
Copiar
-47.5
Plain text
Copiar
console.log(operacion);
JavaScript
Copiar
-42.5
Plain text
Copiar
El resultado esta vez es muy diferente, ya que para calcular esto, antes lo hacía
así:
15 * 3 = 45 / 2 = 22.5 + 10 = 32.5 - 80 = -47.5
Este capítulo número 11 lo voy a dedicar a explicar un poquito por encima lo que
son los arrays. Un tema que ya empieza a poner mucho más interesante el curso,
ya que dan para hacer muchas cosas.
Veamos un ejemplo:
let pizzaMargarita = ["masa","tomate","queso","especias"];
Esta variable llamada pizzaMargarita que almacena un array, podría ser la que
almacenara los ingredientes que solicita un cliente a una pizzería a través de su
sitio web.
Cuando sepas más JavaScript serás capaz de hacer una página de pedidos en la
que el usuario vaya seleccionando ingredientes para su pizza y estos se vayan
almacenando en un array como el del ejemplo.
Con los elementos guardados en el array, podrás hacer muchas cosas, por
ejemplo, mostrarle al cliente lo que ha pedido, generarle una factura con todo
detalle, avisar al cocinero de la pizza de lo que tiene que preparar...
Este es un caso práctico de infinitos que puedes diseñar gracias a la puerta que se
acaba de abrir, los arrays.
Por no decir que para que nuestro código fuese generando variables así, de forma
autónoma, a medida que el usuario fuese generando el pedido, sería mucho más
largo, difícil y tedioso de escribir.
Veamos qué tipo de dato devuelve la consola en esta variable con un array
dentro:
La información que nos devuelve es bastante completa, primero muestra el
número de elementos totales del array (4), muestra cuales son y no solo eso,
también te muestra todas las posiciones del array, que se cuentan como los
strings, a partir del número 0.
console.log(guardaElementoPizza);
Como puedes ver, funciona como cuando usabas charAt() con un string. Solo
que en este caso, no sirve charAt(), ya que este método es para devolver un
carácter de un string, no un string entero. Para que lo entiendas bien, solo
funciona con strings.
let pizzaMargarita = ["masa","tomate","queso","especias"];
let guardaElementoPizza = pizzaMargarita.charAt(0);
console.log(guardaElementoPizza);
JavaScript
Copiar
console.log(guardaElementoPizza);
El resultado esta vez es correcto, accede primero con los corchetes al elemento
que quieras del array y seguidamente, accede a un carácter del elemento
seleccionado con charAt().
También puedes acceder a esto sin charAt() con corchetes dobles:
console.log(guardaElementoPizza);
document.write(texto1);
¿Curioso, verdad? Acabo de unir tres strings en uno solo. Los he "sumado" por
decirlo de alguna forma, aunque por supuesto, esto no es una suma, son dos
concatenaciones. El texto no se puede sumar, si se puede unir.
Esto podrían ser varias variables con strings y funcionaría igual:
document.write(textoCompleto);
Además, puedes concatenar strings sin variable a estas variables.
document.write(textoCompleto);
JavaScript
Copiar
Ya puedes diferenciar lo que es una suma entre dos números (number) o entre
variables contenedoras de números y concatenar o unir dos strings o variables
contenedoras de strings.
Concatenar con arrays
Aprovechando que ya te mostré el tema de los array, quiero que sepas que es
posible concatenar strings contenidos en un array. Solo llama a las posiciones
que creas necesarias.
let palabras = ["Hola.", " Hoy hace un", " día", " estupendo."];
let textoCompleto = palabras[0] + palabras[1] + palabras[2] +
palabras[3];
document.write(textoCompleto);
JavaScript
Copiar
Ves haciendo pruebas, el orden en el que llames a las posiciones de un array da
igual.
Por cierto, puedes llamar a posiciones sueltas de más de un array, solo pon el
nombre y la posición. Tú tienes el control total de JavaScript.
Ejemplos prácticos de
conversiones de string a number
JavaScript pone las conversiones extremadamente fáciles. Solo necesitas un
string con un valor numérico y podrás convertirlo a number para poder operar
con él.
document.write(operacion);
El valor de string "7" se concatena o une al valor de string "5". No opera con ellos.
Podemos intentar forzar esto cambiando un string por un number a ver que pasa.
let num1 = 7;
let num2 = "5";
let operacion = num1 + num2;
document.write(operacion);
Nada, sigue concatenando. Hay que convertir los strings a numbers. Esto lo
haremos con Number().
Palabra del lenguaje nº 28 encontrada.
Number() es un método capaz de convertir strings en number. En caso
de que el string contenga algún carácter que no sea un número
devuelve un valor de NaN.
document.write(operacion);
JavaScript
Copiar
En este caso, convierte directamente los valores del string para poder operar con
ellos. Pero lo strings siguen siendo strings. Ahora si que opera correctamente.
¿Qué ocurre si le intentamos hacer esta conversión con un valor no numérico?
JavaScript
Copiar
Lo que acabo de hacer es forzar una conversión de un string que no tiene un valor
numérico a tipo number. Esto no da errores en la consola, JavaScript es flexible
en este caso. Si miramos el tipo de dato con typeof, podemos ver que aunque no
es un número en absoluto, se ha transformado a number. Ten cuidado con esto,
ya que puedes crear fácilmente incoherencias. Después he concatenado en
el document.write() un string con un espacio para separar el tipo de dato del
valor devuelto (es un simple espacio).
Mirando el valor que ha almacenado, vemos que no almacena realmente el valor
del string. En su lugar, te va a devolver NaN.
Palabra del lenguaje nº 29 encontrada.
NaN son las siglas en inglés de Not a Number. "No es un número" en
español.
¿Cómo convertir de number a
string en JavaScript?
También es muy fácil de hacer. Solo tienes que utilizar el método toString().
Palabra del lenguaje nº 30 encontrada.
toString es un método capaz de convertir tipos de datos number a
string.
let num1 = 7;
let transformaNumber = toString(num1);
document.write(typeof(transformaNumber));
JavaScript
Copiar
Operadores de JavaScript
Capítulo 14: Los operadores de incremento y decremento,
exponenciación, módulo y asignación
Capítulo 14 bastante cargadito, ya que voy a enseñarte los operadores de
incremento y decremento, exponenciación, módulo y asignación. Empecemos
por el incremento y decremento.
let numero1 = 7;
numero1++;
console.log(numero1);
JavaScript
Copiar
Copiar
let numero1 = 7;
numero1--;
console.log(numero1);
JavaScript
Copiar
Copiar
Por si no entiendes muy bien como funciona esto te pongo aquí un equivalente
menos óptimo:
let numero1 = 7;
let numero2 = 7;
numero1 = 7 + 1;
numero2 = 7 - 1;
console.log(numero1);
console.log(numero2);
JavaScript
Copiar
Copiar
Operadores de asignación de
JavaScript
Lo de poder incrementar o decrementar en 1 está muy bien, pero, ¿y si queremos
hacerlo en un número mayor?
let numero1 = 7;
numero1 += 10;
let numero2 = 7;
numero2 -= 50;
console.log(numero1);
console.log(numero2);
JavaScript
Copiar
Copiar
console.log(numero1);
console.log(numero2);
JavaScript
Copiar
150
5
Plain text
Copiar
console.log(exponente);
JavaScript
Copiar
Copiar
console.log(exponente);
JavaScript
Copiar
Copiar
El operador módulo
Para terminar veamos el operador módulo % también conocido como resto. Este
operador hace la división entre dos números y devuelve el resto, no el resultado
como hace el operador de división.
let modulo = 10 % 3;
console.log(modulo);
JavaScript
Copiar
Copiar
console.log(comparador);
JavaScript
Copiar
Puesto que los valores almacenados en las dos variables son iguales, esta
comparación devuelve true (verdadero). Son iguales.
En lenguaje "humano" podríamos traducir esto como ¿Es igual el valor
de numero1 al de numero2? Verdadero, son iguales.
true
Plain text
Copiar
console.log(comparador);
JavaScript
Copiar
Esta vez devuelve false (falso) porque efectivamente, los dos valores son
diferentes.
false
Plain text
Copiar
Operador de comparación
diferente que
Este operador, diferente que !=, es todo lo contrario al anterior, devuelve true si
los valores comparados son diferentes y false si son iguales.
console.log(comparador);
JavaScript
Copiar
Lo dicho, como son diferentes, devuelve true, que quiere decir que
verdaderamente son diferentes.
true
Plain text
Copiar
console.log(comparador);
JavaScript
Copiar
Puesto que son iguales, no se cumple la condición del diferente que != y nos
devuelve false. Es falso que sean diferentes.
false
Plain text
Copiar
console.log(comparador);
JavaScript
Copiar
Copiar
También tenemos un operador para comparar si un valor es mayor que > otro.
console.log(comparador);
JavaScript
Copiar
Copiar
console.log(comparador);
JavaScript
Copiar
Copiar
console.log(comparador);
JavaScript
Copiar
Esta vez, el valor de numero1 es menor que el valor de numero4, en este caso, se
cumple la condición y devuelve true.
true
Plain text
Copiar
console.log(comparador);
JavaScript
Copiar
Copiar
console.log(comparador);
JavaScript
Copiar
Copiar
console.log(comparador);
JavaScript
Copiar
Copiar
console.log(comparador);
JavaScript
Copiar
Copiar
console.log(comparador);
JavaScript
Copiar
Copiar
JavaScript
Copiar
Copiar
El condicional if else
De los condicionales de JavaScript, if else, será el que verás y utilizarás con
más frecuencia.
Aquí tienes la sintaxis del condicional if else:
// Pseudocódigo.
if (condición) { bloque de código si se cumple }
else { bloque de código si no se cumple }
JavaScript
Copiar
JavaScript
Copiar
JavaScript
Copiar
¿Cómo toma JavaScript una decisión? Lo hace con lógica. Utiliza booleanos
como he dicho. Cuando declaras el bloque del if le dices a JavaScript,
comprueba si el valor de numero1 es mayor que 60. Si a esta pregunta el valor
booleano le responde con un true, quiere decir que se cumple su condición.
JavaScript ahora sabe que numero1 es mayor que 60 y al llegar a esta conclusión,
sabe que tiene que ejecutar todo el código que haya en su interior. El del else, no
le hace ni caso. Lo ignora por completo.
En cambio, si el valor booleano recibido es false, sabe que no se cumple la
condición del if y por eso, ignora todo su código y ejecuta el del else.
if (true){
alert("Verdadero");
} else {
alert("Falso");
}
JavaScript
Copiar
if (false){
alert("Verdadero");
} else {
alert("Falso");
}
JavaScript
Copiar
if (numero1 == 50){
alert("El número es igual a 50.");
}
JavaScript
Copiar
Debes tener claro dos cosas importantes. La primera es que las salidas del código
que estoy sacando en alert() las puedes sacar donde quieras, por ejemplo, en la
consola o en el documento html, todo funciona igual. La segunda cosa es que
independientemente de que se ejecute algún bloque if o else, el código
continuará ejecutándose debajo con normalidad.
if (numero1 == 50){
alert("El número es igual a 50.");
}
JavaScript
Copiar
La entrada de datos con prompt()
Capítulo 17: La entrada de datos con prompt() de JavaScript
Me voy a desviar por un capítulo de los condicionales para enseñarte algo que
vamos a utilizar en ellos, y no solo en ellos.
Lo que te voy a enseñar es para que tu código pueda interactuar con el usuario.
Lo haremos con el método prompt().
Palabra del lenguaje nº 33 encontrada.
prompt es un método que permite al usuario introducir datos con los
que el código puede interactuar.
Puedes guardar lo que recoge del usuario en una variable. Veamos un ejemplo.
let nombre;
JavaScript
Copiar
Declaro una variable sin iniciar (da igual si la inicias con cualquier cosa). Gracias
a prompt(), se despliega una ventanita parecida a la del alert(), solo que en este
caso, a parte de informar con un string, va a permitir introducir algo con el
teclado. Lo que se introduzca, quedará almacenado en la variable nombre y
podrá ser utilizado como un valor más en el código.
JavaScript
Copiar
let nombre;
if (nombre != null){
document.write("Bienvenido/a a mi sitio web, " + nombre +
".");
} else {
alert("No has introducido nada. Recarga la página para
intentarlo de nuevo.");
}
JavaScript
Copiar
JavaScript
Copiar
if (vidas == 0) {
gameOver = true;
alert("Game over...");
}
JavaScript
Copiar
if (vidas == 0) {
gameOver = true;
alert("Game over...");
}
if (gameOver == true){
respuesta = prompt("¿Quiere seguir jugando?");
}
JavaScript
Copiar
if (vidas == 0) {
gameOver = true;
alert("Game over...");
}
if (gameOver == true){
respuesta = prompt("¿Quiere seguir jugando?");
if (respuesta == 'si'){
vidas = 3;
gameOver = false;
alert("Estupendo, ¡a seguir jugando!");
} else {
alert("¡Hasta la próxima");
}
}
JavaScript
Copiar
Este nuevo if else se ejecutará solo, en caso de que el jugador haya perdido
(gameOver = true). En ese momento se ejecutará el prompt(). Si la respuesta del
jugador es igual a 'si' (quiere seguir jugando), se ejecutará el código
del if anidado que asignará un valor de 3 a la variable vidas y dejaría el valor
de gameOver de nuevo en false. Por lo que podríamos decir que vuelve a dejarlo
todo como estaba. En el caso de que el jugador no diga explícitamente que 'si',
le avisará con un mensaje de despedida.
Probemos este código. Para que haga algo, tienes que dejar el valor
de vidas a 0 editando el código, ya que de momento, no tenemos ningún sistema
de eventos que haga perder vidas al jugador.
Seguimos con los condicionales, para ello, tenemos que ampliar los operadores
vistos hasta ahora.
JavaScript
Copiar
Esta condición quiere decir que si el color es rojo y el objeto es mesa
exactamente, se cumple la condición. En cambio, si por ejemplo una de las dos
cosas no se cumple, no se ejecutará el código del if, o lo que es lo mismo,
dará false.
En el siguiente ejemplo, el color sigue siendo rojo, pero en objeto ya no se cumple
la condición, de modo que no se ejecuta el código del if.
JavaScript
Copiar
Operador lógico OR
El operador lógico OR nos permite hacer condiciones en las que solo se cumpla
una de las dos comparaciones, independientemente de que se cumple una o las
dos. por ejemplo:
JavaScript
Copiar
JavaScript
Copiar
En este caso, la condición debería dar false, puesto que el valor de color se
cumple pero de objeto no, y lleva un operador lógico AND, se tendrían que cumplir
los dos valores para que diera un valor de true. En cambio, por el operador de
negación not ! se consigue todo lo contrario, si no se cumple la condición o
expresión de dentro de los paréntesis, devuelve true.
El operador lógico not (!) devuelve todo al revés. Da un valor de true si la
condición no se cumple y un valor de false si se cumple.
console.log(expresión);
JavaScript
Copiar
true
Plain text
Copiar
Seguimos con los condicionales. Hasta ahora has visto como hacer expresiones
simples con un operador y dos valores y expresiones compuestas con varios
operadores y valores. También has visto como anidar if else para crear
estructuras de control de flujo más complejas. No lo he dicho hasta ahora, pero a
los condicionales se les llama también como estructuras de control de flujo, ya
que son capaces de modificar el orden del flujo de ejecución.
El uso de else if en JavaScript
else ifes un extra que podemos añadir en los if else. Podemos crear un
montón de condiciones relacionadas encadenando tantos else if como
queramos.
Palabra del lenguaje nº 34 encontrada.
else if es una forma de añadir más de una condición verdadera.
JavaScript
Copiar
Si se introduce una edad mayor o igual a 18 y que además sea menor a 100 se
ejecutará el segundo else if.
Finalmente, tenemos un else para contemplar cualquier edad mayor a 100 años.
// Pseudocódigo.
switch (expresión) {
case condición 1:
bloque de código a ejecutar
break;
case condición 2:
bloque de código a ejecutar
break;
default:
bloque de código por defecto si no hay coincidencias
con ningún case.
}
JavaScript
Copiar
switch (estacion){
case "invierno":
alert("Todo es frío.");
break;
case "primavera":
alert("Se colorea el mundo.");
break;
case "verano":
alert("Las noches se hacen largas.");
break;
case "otoño":
alert("Donde había color ya no queda nada.");
break;
default:
alert("Eso no es una estación.");
break;
}
JavaScript
Copiar
switch (estacion){
case "invierno":
alert("Todo es frío.");
case "primavera":
alert("Se colorea el mundo.");
case "verano":
alert("Las noches se hacen largas.");
case "otoño":
alert("Donde había color ya no queda nada.");
default:
alert("Eso no es una estación.");
}
JavaScript
Copiar
if (estacion == "invierno"){
alert("Todo es frío.");
}
else {
alert("Eso no es una estación.");
}
JavaScript
Copiar
Pues bien, cada vez que necesites realizar algo repetitivo, lo puedes realizar con
un bucle.
// Pesudocódigo.
for (inicializador; condición de salida; expresión final) {
bloque de código a ejecutar
}
JavaScript
Copiar
for(i=1;i<=10;i++){
document.write("El valor del bucle es: " + i + "<br>");
}
JavaScript
Copiar
Aquí lo que hacemos es ejecutar el bloque de código diez veces. En este caso es
solo un mensaje en el documento, pero podría ser cualquier trozo de código que
quieras ejecutar diez veces.
El bucle for se inicia con la palabra reservada for, seguida de unos paréntesis. En
ellos debemos escribir tres cosas. La primera parte, es lo que se llama
inicializador, se trata de una variable, la cual podemos especificar con let,
con var o sin nada, solo con su nombre, de momento, hasta que te muestre los
temas del alcance (scope en inglés) lo escribiremos sin let y sin var. Por
convención, se escribe en los bucles una i, pero no pasa nada si pones otro
nombre de variable cualquiera, solo sigue las normas de nomenclatura para
variables que te expliqué anteriormente.
Después de escribir el inicializador, pon punto y coma y escribe la segunda parte,
la condición de salida, la cual indica dónde tiene que detenerse el bucle. En este
caso, cuando i (o el nombre que le quieras poner) valga 10, la condición ya no
será true, y saldremos del bucle. Mientras sea menor o igual a 10, será true.
Quizás hayas deducido para que es la última parte. La última parte, la expresión
final, se utiliza para incrementar o decrementar, en este caso el valor de i. De
esta forma, en algún determinado momento se podrá detener el bucle. En caso
de que de alguna forma, no consigamos que con la expresión final el bucle
devuelva false, no se detendrá, tendremos un bucle infinito.
Es importante que tengas en cuenta el uso de los operadores que hemos visto
hasta ahora. En ejemplo anterior, el operador de la condición de salida es menor
o igual qué. ¿Pero que pasa si ponemos un menor qué en el siguiente ejemplo?
for(i=1;i<10;i++){
document.write("El valor del bucle es: " + i + "<br>");
}
JavaScript
Copiar
Simplemente, que el bucle se va a ejecutar nueve veces, así que tenlo en cuenta,
menor que diez, es sinónimo de 9.
Podrías hacer esto mismo de forma bastante más elaborada con tantos
condicionales if como iteraciones quieras ejecutar. Algo muy poco óptimo la
verdad. Te dejo a continuación, un ejemplo. Solo quiero que sepas como se hace,
no quiero que lo tomes como una buena práctica.
if (i == 1){
document.write("El valor es: " + i + "<br>");
i++;
}
if (i == 2){
document.write("El valor es: " + i + "<br>");
i++;
}
if (i == 3){
document.write("El valor es: " + i + "<br>");
i++;
}
if (i == 4){
document.write("El valor es: " + i + "<br>");
i++;
}
if (i == 5){
document.write("El valor es: " + i + "<br>");
i++;
}
if (i == 6){
document.write("El valor es: " + i + "<br>");
i++;
}
if (i == 7){
document.write("El valor es: " + i + "<br>");
i++;
}
if (i == 8){
document.write("El valor es: " + i + "<br>");
i++;
}
if (i == 9){
document.write("El valor es: " + i + "<br>");
i++;
}
if (i == 10){
document.write("El valor es: " + i + "<br>");
i++;
}
JavaScript
Copiar
Utilizando varios if, he conseguido el mismo resultado que con el bucle pero con
muchas más líneas de código. He tardado mucho más y el resultado es peor. ¿Y si
en lugar de diez iteraciones fuesen diez mil?
Toma esto como ejemplo de que si no utilizas cada cosa para su debida función,
vas a complicarte mucho y a escribir código de mala calidad.
// Pseudocódigo.
inicializador
while (condición de salida) {
código a ejecutar
expresión final
}
JavaScript
Copiar
El inicializador esta vez se encuentra fuera del propio bucle.
La condición de salida se especifica entre los paréntesis del while. Abrimos llaves
y dentro se coloca todo el código a ejecutar por el bucle. Antes de cerrar las llaves
hay que escribir la expresión final (también conocida como actualización o
incremento/decremento).
Creando un bucle while
Escribamos un ejemplo sencillo con el bucle while. Vamos a realizar el mismo
ejemplo que viste con el bucle for para que puedas hacer comparaciones a la vez
que aprendes como se escribe y funciona.
let i = 1;
JavaScript
Copiar
Finalmente, abrimos unas llaves en las que se escribe todo el código que quieras
ejecutar en bucle en su interior. Antes del cierre de esta llave, tienes que incluir la
expresión final. En este caso un incremento.
El bucle for
for(i=1;i<=10;i++){
document.write("El valor del bucle es: " + i + "<br>");
}
JavaScript
Copiar
El bucle while
let i = 1;
JavaScript
Copiar
Aquí tienes el mismo ejemplo escrito en los dos tipos de bucles, para que
compares. El bucle for cuenta con el inicializador, condición de salida y
expresión final en el mismo sitio, entre los paréntesis. En cambio, el
bucle while tiene una parte predeclaración (inicializador, la variable declarada),
otra parte entre los paréntesis (condición de salida) y la otra dentro de las llaves
con el código a ejecutar.
Bucles con break y continue
Capítulo 24: Controlar los bucles con break, continue y condicionales
En este capítulo te voy a mostrar como utilizar condicionales dentro de bucles.
También va a ver el uso de break y continue además de ejemplos con bucles
infinitos.
let i = 1;
while (i <= 10) {
document.write("El valor del bucle es: " + i + "<br>");
i++;
if (i == 7){
document.write("Se rompió la ejecución del bucle.");
break;
}
}
JavaScript
Copiar
Como puedes ver, el bucle se ejecuta con normalidad hasta que llega a ser true la
condición del if que contiene un break que rompe la ejecución del bucle antes de
lo indicado en su condición de salida.
Utilizar continue para salir de un bucle
let i = 0;
JavaScript
Copiar
Bucles infinitos
Pasemos a hablar sobre los bucles infinitos.
let i = 1;
JavaScript
Copiar
A este bucle le falta la expresión final (incremento/decremento). De esta forma, el
valor inicial de i siempre será 1, de forma que la condición de salida del bucle
nunca se cumple y se ejecutará infinitamente.
En el vídeo te muestro un entorno de pruebas con una aplicación web para que
puedas probar estos bucles infinitos. Si lo pruebas en tu navegador directamente
lo vas a dejar colgado al estar iterando constantemente.
Decrementar en bucles
Hasta ahora solo he utilizado el incremento para la expresión final. Puedes
utilizar también el decremento para salir de un bucle.
let i = 15;
JavaScript
Copiar
Es lo mismo, solo que ahora, hay que hacer el cálculo al revés, el valor inicial
de i es 15 y va restando hasta llegar a 10.
// Pseudocódigo.
inicializador
do {
código a ejecutar
expresión final
} while (condición);
JavaScript
Copiar
Primero tenemos el inicializador fuera del bucle, al igual que el while normal. el
código a ejecutar, lo tenemos dentro de las llaves del do además de la expresión
final. Finalmente, el while con la condición de salida.
let i = 0;
do {
console.log("El valor de i es: " + i);
i+=5;
} while (i <= 50);
JavaScript
Copiar
El valor de i es: 0
El valor de i es: 5
El valor de i es: 10
El valor de i es: 15
El valor de i es: 20
El valor de i es: 25
El valor de i es: 30
El valor de i es: 35
El valor de i es: 40
El valor de i es: 45
El valor de i es: 50
Plain text
Copiar
let i = 100;
do {
console.log("El valor de i es: " + i);
i+=5;
} while (i <= 50);
JavaScript
Copiar
Copiar
Ejemplo de uso con el bucle do
while
Supón que tienes un bucle while y a continuación, un if que depende de que
este bucle devuelva algún valor. En caso de que el while sea false ya de entrada,
provocará un error en el if que está esperando algún valor.
En cambio, con un do while, aunque esto ocurra, se ejecutará si o si al menos una
vez, aunque sea false desde un principio.
Podría poner un montón de códigos de ejemplo con el bucle do while, pero
vamos a dejar el capítulo aquí, quiero que sigas avanzando. Ya lo iremos
utilizando durante el curso.
Proyecto 1 de JavaScript - Bucles
Capítulo 26: Bucles - Proyecto resuelto
for(i=10;){}
JavaScript
Copiar
for(i=10;i>=-19;){}
JavaScript
Copiar
La expresión final debe ser con decremento. Por eso he puesto menos 20.
for(i=10;i>=-19;i--){}
JavaScript
Copiar
for(i=10;i>=-19;i--){
document.write("El valor del bucle es: " + i + "<br>");
}
JavaScript
Copiar
El valor del bucle es: 10
El valor del bucle es: 9
El valor del bucle es: 8
El valor del bucle es: 7
El valor del bucle es: 6
El valor del bucle es: 5
El valor del bucle es: 4
El valor del bucle es: 3
El valor del bucle es: 2
El valor del bucle es: 1
El valor del bucle es: 0
El valor del bucle es: -1
El valor del bucle es: -2
El valor del bucle es: -3
El valor del bucle es: -4
El valor del bucle es: -5
El valor del bucle es: -6
El valor del bucle es: -7
El valor del bucle es: -8
El valor del bucle es: -9
El valor del bucle es: -10
El valor del bucle es: -11
El valor del bucle es: -12
El valor del bucle es: -13
El valor del bucle es: -14
El valor del bucle es: -15
El valor del bucle es: -16
El valor del bucle es: -17
El valor del bucle es: -18
El valor del bucle es: -19
Plain text
Copiar
Realmente el bucle se está iterando 30 veces, ya que en este caso, está el 0 por en
medio. Bien, podemos por ejemplo poner el valor de la condición de salida a -19
para cumplir con el requisito número 5.
for(i=10;i>=-19;i--){
document.write("El valor del bucle es: " + i + "<br>");
if (i == -10) {
break;
}
}
JavaScript
Copiar
for(i=10;i>=-19;i--){
if (i == 0) {
continue;
}
document.write("El valor del bucle es: " + i + "<br>");
if (i == -10) {
break;
}
}
JavaScript
Copiar
Esta vez el valor de 0 no se imprime. Es importante poner este nuevo if antes del
document.write().
for(i=10;i>=-19;i--){
if (i == 0) {
continue;
}
document.write("El valor del bucle es: " + i + "<br>");
if (i == -10) {
break;
}
}
JavaScript
Copiar
Con esto, aparecerá un alert() antes de ejecutar el bucle y un texto en el
documento al finalizarlo.
Nos falta introducir lo del usuario y contraseña. Lo vamos a hacer con un cuatro
variables, dos prompts y un if. Piensa que para cumplir con el requisito número 7
y que el bucle se ejecute solo si se pone bien el usuario y contraseña, debemos
meter el bucle dentro de este nuevo if else para que controle su ejecución.
else {
alert("El bucle va a comenzar.");
for(i=10;i>=-19;i--){
if (i == 0) {
continue;
}
document.write("El valor del bucle es: " + i + "<br>");
if (i == -10) {
break;
}
}
JavaScript
Copiar
Espero que te haya gustado hacer algo un poco más complicado para ir saliendo
de la zona de confort. Es normal si no sabías ni como empezar con el proyecto. Es
algo muy grande en comparación con lo que se ha dado hasta ahora en el curso.
No obstante, piensa que todo lo que hay en este código ya está explicado,
simplemente lo hemos llevado un poco más allá. Si no has visto el vídeo, te lo
recomiendo. Seguro que lo vas entendiendo mejor. Cualquier duda, déjame un
comentario.
JavaScript
Copiar
let numero1;
let numero2;
numero1 = 25;
numero2 = 50;
console.log(numero1);
console.log(numero2);
console.log(guardaSuma);
Nos devuelve 25 y 50, estos son los valores de numero1 y numero2 de fuera de la
función, en cambio, guardaSuma, suma los valores recibidos en la llamada.
25
50
20
console.log(numero1);
Vamos a ver en este capítulo como funciona el ámbito de las variables, también
conocido como alcance, visibilidad o scope en inglés. Un tema fundamental
para trabajar correctamente con variables. Además, verás la diferencia
entre var y let.
Hagamos una prueba tanto con var como con let, ya que funcionan de forma
diferente.
var variable1 = "Alcanzada la variable con VAR.";
let variable2 = "Alcanzada la variable con LET.";
function alcances(){
console.log(variable1 + "\n" + variable2);
}
alcances();
JavaScript
Copiar
Copiar
En este caso, las dos variables son alcanzadas dentro de la función sin ningún
problema. Pero ¿Qué pasa si declaro otras variables con el mismo nombre dentro
de la misma hoja .js?
function alcances(){
console.log(variable1 + "\n" + variable2);
}
alcances();
JavaScript
Copiar
Copiar
Dice que el identificador de la variable2 ya está declarado. Esperábamos que
ocurriera un error, pero, ¿porqué el error se refiere solo a variable2? ¿Qué pasa
con la variable1 declarada con var?
Algo de esto expliqué en el capítulo 5. Dije lo siguiente, por si no lo recuerdas:
Con var podemos redeclarar una variable tantas veces como queramos
utilizando la palabra reservada delante del identificador.
Por eso la consola no da ningún error. Está permitido, en cambio, con let no. Es
uno de los motivos de tener dos palabras para declarar variables.
Quitamos la redeclaración de variable2 y funciona sin problemas:
function alcances(){
console.log(variable1 + "\n" + variable2);
}
alcances();
JavaScript
Copiar
Copiar
alcances();
JavaScript
Copiar
Copiar
function alcances(){
let variable1 = "Variable1 dentro de la función";
var variable2 = "Variable2 dentro de la función";
console.log(variable1 + "\n" + variable2);
}
alcances();
console.log(variable1);
console.log("\n");
console.log(variable2);
JavaScript
Copiar
Copiar
JavaScript
Copiar
Podemos pensar que al igual que ocurre con las funciones, no podremos acceder
a esta variable llamada suma por el simple hecho de no estar creada fuera de un
bloque. No obstante, se puede acceder sin problemas, el alcance está
funcionando como global aunque debería ser local.
El valor total de la suma es: 2700
Plain text
Copiar
Esto ocurre porque estoy declarando la variable suma con var. Uno de los motivos
de crear let es este, ya que let funciona diferente, tiene lo que se conoce como
alcance de bloque (block scope en inglés).
JavaScript
Copiar
Copiar
Pasemos a ver algún ejemplo con bucles.
for(i=1;i<=10;i++){
console.log("El valor del bucle es: " + i);
}
JavaScript
Copiar
for(var i=1;i<=10;i++){
console.log("El valor del bucle es: " + i);
}
JavaScript
Copiar
Esto quiere decir que si dejamos la variable del bucle con var o sin nada más que
su nombre, no se utilizará este alcance de bloque y la variable será accesible a
nivel global.
for(var i=1;i<=10;i++){
}
JavaScript
Copiar
Copiar
for(let i=1;i<=10;i++){
}
JavaScript
Copiar
Copiar
Suficientes conceptos sobre el alcance para esta parte del curso. El siguiente
capítulo será el segundo proyecto del curso, una calculadora.
Para realizar este proyecto, podemos crear una única función que realice todas
las operaciones de cálculo o bien crear funciones para cada una de las
operaciones de suma, resta, multiplicación, etc.
Es más interesante crear una función separada para cada cosa, llamémoslos
pequeños módulos. Estos módulos, podrán ser empleados por separado sin
depender de los otros módulos. Es decir, si en cualquier parte del código
necesitas que se realice una suma, llamas a la función suma y no a todas las
operaciones si estuvieran en la misma función. Conseguimos algo más de
velocidad a la hora de ejecutarlo. Es cierto que con funciones tan simples no se va
a notar, pero es conveniente que te vayas acostumbrando a hacer las cosas lo
más óptimas que puedes.
Copiar
operacion es una variable que contiene un prompt(). Esto lo hago para poder
guardar el valor que introduzca el usuario para poder utilizarlo más adelante.
Las variables operando1 y operando2 son los operandos (números) que vamos a
utilizar en las diferentes operaciones.
La variable resultado la reservo sin inicializar hasta más adelante.
Te habrás fijado en que el prompt() de operando1 y operando2 está envuelto entre
los paréntesis de un parseInt(). Con esto, conseguimos transformar el string que
almacena el prompt() en un tipo numérico entero.
Por si no recuerdas lo del prompt(), en el capítulo 17 dije:
prompt() devuelve un tipo de dato string aunque le introduzcas un
número. Compruébalo con un typeof().
Palabra del lenguaje nº 46 encontrada.
parseInt es una función de alto nivel que devuelve un valor numérico
entero a partir de una cadena (string) siempre que sea posible.
JavaScript
Copiar
switch (operacion){
case "1":
resultado = suma(operando1,operando2);
document.write("El valor de la suma es: " +
resultado);
break;
case "2":
resultado = resta(operando1,operando2);
document.write("El valor de la resta es: " +
resultado);
break;
case "3":
resultado = multiplicacion(operando1,operando2);
document.write("El valor de la multiplicación es: " +
resultado);
break;
case "4":
resultado = division(operando1,operando2);
document.write("El valor de la división es: " +
resultado);
break;
default:
alert("La opción especificada no es correcta.");
break;
}
JavaScript
Copiar
//Declaración de variables.
let operacion = prompt("¿Qué operación desea? 1-Sumar 2-Restar 3-
Multiplicar 4-Dividir.");
let operando1;
let operando2;
let resultado;
JavaScript
Copiar
Las constantes
Capítulo 30: ¿Cómo funcionan las constantes en JavaScript?
Terminamos la parte básica del curso con las constantes de JavaScript. Por
supuesto, esto no termina aquí, en el siguiente capítulo empieza el curso de nivel
medio.
console.log(PRIMERA_CONSTANTE);
JavaScript
Copiar
Hasta aquí, el funcionamiento es como el de una variable normal. Podemos
declararla, inicializarla y llamarla.
Copiar
JavaScript
Copiar
Copiar
JavaScript
Copiar
Copiar
¿Cuándo utilizar las constantes
en JavaScript?
Las constantes las podemos utilizar en datos que sepamos que no van a cambiar
o que no queremos que sean modificados. Un ejemplo puede ser el número de la
constante PI const PI = 3.1415926535897932, el cual es siempre el mismo, por
eso se llama constante PI.
funcion_constante();
if (true) {
const ALCANCE = "Dentro del if.";
console.log(ALCANCE);
}
JavaScript
Copiar
Dentro de la función.
Fuera de la función.
Dentro del if.
Plain text
Copiar
JavaScript
Copiar
Copiar
const VACIA;
JavaScript
Copiar
Lanza un SyntaxError que dice que falta el inicializador en una declaración const.
Uncaught SyntaxError: Missing initializer in const declaration at
line 1.
SEGUNDO NIVEL
¿Cómo funcionan los eventos en JavaScript?
Capítulo 31: Introducción a los eventos
Dejamos atrás la parte básica del curso para dar paso al nivel medio. Nivel que
voy a inaugurar con una Introducción a los eventos de JavaScript.
En resumen, podemos hacer que cuando pase algo en concreto, se ejecute una
acción.
Disponemos de muchos tipos de eventos que iremos viendo a lo largo del curso.
En este capítulo solo probarás el tipo de evento onclick, solo para que puedas
ver un ejemplo de uso práctico de los eventos.
¿Qué es un controlador de eventos?
Un controlador de eventos es el mecanismo que necesitas para que se maneje el
evento. Por norma general, será una función que se va a llamar en el momento en
el que se active el evento.
Tendrás que tener los siguientes archivos para hacer la prueba. Los puedes dejar
en la raíz del directorio principal (raíz) o bien, crea carpetas, una para ir
guardando archivos .js y otra para los de .css tal y como muestro en el vídeo.
Para realizar este ejemplo, te basta con el archivo .html, ya que vamos a escribir
ahí el evento de JavaScript directamente sobre una etiqueta html. La parte del
CSS es opcional, ya que este curso no va a estar dedicado a esto, para ello tienes
mi curso dedicado a CSS desde cero. No obstante, no está mal que vayas
practicando con el manejo de archivos aunque no entiendas demasiado CSS. Con
un botón por defecto de html te sirve para hacer esto.
test.html
Este es el código que debes guardar en una página .html.
En lo que te tienes que fijar es en la línea 11. Aquí tienes una
etiqueta <button> con un evento de tipo onclick ejecutado directamente desde
este botón. En este onclick he puesto un alert() de JavaScript.
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Introducción a los eventos</title>
<script src="test.js"></script>
<link href="test.css" rel="stylesheet" />
</head>
<body>
<button onclick="alert('¡Has pulsado el botón!');">¡NO
PULSAR!</button>
</body>
</html>
HTML
Copiar
test.css
Este es el código que debes guardar en una hoja .css.
@import url('https://fonts.googleapis.com/css2?
family=Bungee&display=swap');
body{
text-align: center;
margin-top: 7em;
}
button {
padding: 1em 2.1em 1.1em;
display: block;
color: #e8e1df;
background-color: #fbdedb;
display: inline-block;
background: #ec7b6f;
background-color: #f04747;
transition: 0.6s;
font-family: 'Bungee', cursive;
font-size: 2em;
text-align: center;
position: relative;
border-radius: 1.5em;
box-shadow: 0em -0.6rem 0.1em rgba(0, 0, 0, 0.1) inset;
border:none;
}
button:hover, .btn:focus {
opacity: 0.75;
}
button:active {
transform: scale(1.2);
}
CSS
Copiar
console.log(typeof objeto);
JavaScript
Copiar
Con el código anterior se acaba de crear un objeto literal vacío (ahora explicaré lo
de literal). El typeof nos indica que efectivamente se ha creado un objeto.
object
Plain text
Copiar
let usuario = {
nombreCompleto: ['Enrique', 'Barros', 'Fernández'],
edad: 30,
telefono: '0467489304',
paisResidencia: 'Australia',
idiomas: ['Español', 'Catalán', 'Inglés', 'Portugués',
'Italiano'],
};
console.log(usuario);
JavaScript
Copiar
Copiar
// Pseudocódigo.
let objeto = {
propiedad1: 'valor',
propiedad2: 'valor',
propiedad3: 'valor',
};
Es infinito lo que podemos hacer con los objetos, aún quizás no le veas la utilidad
real, pero pronto lo harás. En el siguiente capítulo seguimos con más cosas sobre
los objetos, espero que te hayas quedado con ganas de más.
let usuario = {
nombre_completo: ['Enrique', 'Barros', 'Fernández'],
edad: 30,
telefono: '0467489304',
pais_residencia: 'Australia',
idiomas: ['Español', 'Catalán', 'Inglés', 'Portugués',
'Italiano'],
};
console.log(usuario.nombre_completo);
JavaScript
Copiar
console.log(usuario.nombre_completo[2]);
JavaScript
Copiar
Fernández
Plain text
Copiar
Escribamos un método que sea capaz de hacer algo sencillo, un saludo al usuario
con su nombre.
let usuario = {
// Propiedades.
nombre_completo: ['Enrique', 'Barros', 'Fernández'],
edad: 30,
telefono: '0467489304',
pais_residencia: 'Australia',
idiomas: ['Español', 'Catalán', 'Inglés', 'Portugués',
'Italiano'],
// Métodos.
saludar: function() {
alert('Hola, ' + this.nombre_completo[0] + '.');
}
};
usuario.saludar();
JavaScript
Copiar
let usuario = {
// Propiedades.
nombre_completo: ['Enrique', 'Barros', 'Fernández'],
edad: 30,
telefono: '0467489304',
pais_residencia: 'Australia',
idiomas: ['Español', 'Catalán', 'Inglés', 'Portugués',
'Italiano'],
// Métodos.
saludar: function() {
alert('Hola, ' + usuario.nombre_completo[0] + '.');
}
};
usuario.saludar();
let usuario = {
nombre_completo: ['Enrique', 'Barros', 'Fernández'],
edad: 30,
telefono: '0467489304',
pais_residencia: 'Australia',
idiomas: ['Español', 'Catalán', 'Inglés', 'Portugués',
'Italiano'],
};
console.log(usuario.edad);
console.log(edad);
JavaScript
Copiar
Aquí podemos ver que realmente hay un espacio de nombre global, el de la hoja
de JavaScript y el del objeto usuario. Para acceder al namespace del objeto,
debemos nombrarlo. Seguido de esto, pondremos un punto . para acceder a su
contenido.
30
45
Plain text
Copiar
Notación de punto y notación con
corchetes
Veamos la notación de punto y la notación con corchetes.
console.log(usuario.edad);
JavaScript
Copiar
usuario['edad'];
JavaScript
Copiar
let usuario = {
nombre_completo: ['Enrique', 'Barros', 'Fernández'],
edad: 30,
telefonos : {
telefono1: '0467489304',
telefono2: '0446395860'
},
pais_residencia: 'Australia',
idiomas: ['Español', 'Catalán', 'Inglés', 'Portugués',
'Italiano'],
};
console.log(usuario.telefonos.telefono1);
console.log(usuario['telefonos']['telefono2']);
JavaScript
Copiar
let usuario = {
nombre_completo: ['Enrique', 'Barros', 'Fernández'],
edad: 30,
telefonos : {
telefono1: '0467489304',
telefono2: '0446395860'
},
pais_residencia: 'Australia',
idiomas: ['Español', 'Catalán', 'Inglés', 'Portugués',
'Italiano'],
};
usuario.edad = 27;
console.log(usuario.edad);
JavaScript
Copiar
27
Plain text
Copiar
let usuario = {
nombre_completo: ['Enrique', 'Barros', 'Fernández'],
edad: 30,
telefonos : {
telefono1: '0467489304',
telefono2: '0446395860'
},
pais_residencia: 'Australia',
idiomas: ['Español', 'Catalán', 'Inglés', 'Portugués',
'Italiano'],
};
usuario.edad = 27;
if (usuario.edad != 30) {
console.log('Se ha modificado la edad de ' +
usuario.nombre_completo[0] + '.');
console.log('El nuevo valor de edad es ahora ' +
usuario.edad + '.');
}
JavaScript
Copiar
Copiar
Puedes ver que se han abierto una infinidad de caminos con el tema de los
objetos. No puedo mostrártelos todos, pero intentaré mostrarte muchos para
que al terminar el curso sepas desarrollar los tuyos propios.
let usuario = {
nombre_completo: ['Enrique', 'Barros', 'Fernández'],
edad: 30,
telefonos : {
telefono1: '0467489304',
telefono2: '0446395860'
},
pais_residencia: 'Australia',
idiomas: ['Español', 'Catalán', 'Inglés', 'Portugués',
'Italiano'],
};
console.log(usuario);
JavaScript
Copiar
{
direccion: "937 Beer Trafficway",
edad: 30,
idiomas: ["Español", "Catalán", "Inglés", "Portugués",
"Italiano"],
nombre_completo: ["Enrique", "Barros", "Fernández"],
pais_residencia: "Australia",
telefonos: {
telefono1: "0467489304",
telefono2: "0446395860"
}
}
let usuario = {
// Propiedades.
nombre_completo: ['Enrique', 'Barros', 'Fernández'],
edad: 30,
telefono: '0467489304',
pais_residencia: 'Australia',
idiomas: ['Español', 'Catalán', 'Inglés', 'Portugués',
'Italiano'],
// Métodos.
saludar: function() {
alert('Hola, ' + this.nombre_completo[0] + '.');
}
};
delete usuario.idiomas;
delete usuario.saludar;
console.log(usuario);
JavaScript
Copiar
Copiar
Como ejemplo, vamos a reutilizar el código del capítulo 35, el del condicional if.
let usuario = {
nombre_completo: ['Enrique', 'Barros', 'Fernández'],
edad: 30,
telefonos : {
telefono1: '0467489304',
telefono2: '0446395860'
},
pais_residencia: 'Australia',
idiomas: ['Español', 'Catalán', 'Inglés', 'Portugués',
'Italiano'],
};
usuario.edad = 27;
if (usuario.edad != 30) {
console.log('Se ha modificado la edad de ' +
usuario.nombre_completo[0] + '.');
console.log('El nuevo valor de edad es ahora ' +
usuario.edad + '.');
console.log('El valor de edad anterior era ' + edad_usuario
+ '.');
}
JavaScript
Copiar