Tema 2. Introducción a JavaScript
Tema 2. Introducción a JavaScript
Tema 2. Introducción a
JavaScript
Índice
Esquema
Ideas clave
A fondo
Cláusula switch
Método forEach
Documentación de JavaScript
Test
Esquema
En este tema realizaremos una introducción a este lenguaje y veremos los siguientes
aspectos:
van a ser las herramientas que usaremos para desarrollar código en JavaScript.
de datos que podemos utilizar con él. Como verás, comparte similitudes con otros
lenguajes de programación muy conocidos, pero tiene algunas peculiaridades que
señalaremos.
JavaScript que nos permiten crear lógicas más complejas, en función de ciertas
Si bien todo el contenido que se expondrá aquí es suficiente para conocer las
que pueda interactuar con las páginas HTML que el usuario visualice. Por cierto, le
pondremos algún nombre relacionado con Java, ya que este es ahora mismo el lenguaje
más famoso y se usa cada vez más en navegadores. Nos vamos a aliar con Sun
Microsystems (quien detenta la marca Java) para intentar frenar a nuestro principal
competidor: Microsoft (y su navegador Internet Explorer)».
El joven Eich ya sabía lo que tenía que hacer: sacar un nuevo lenguaje de
desarrolladores.
LiveScript, sin embargo, fue obligado a incluir la palabra Java por motivos
JavaScript hizo su debut en la versión 2.0 del navegador Netscape (1995). En 1996,
llamó JScript (para evitar infringir la marca ostentada por Netscape) en la versión 3.0
de Internet Explorer.
gustaría) a copiar y pegar segmentos de código que veían aquí y allá sin entender
estandarizado fue llamada ECMAScript para evitar conflictos futuros con la marca
Java (ostentada por Sun). A veces, esta doble nomenclatura causa confusión.
en el navegador.
servicios populares, como Google Maps o Gmail. Estos sitios web prácticamente se
Es lo que se conoce como AJAX, concepto originalmente acuñado por James Garret
AJAX permite la búsqueda de información por parte de una página web (mediante
la información recabada.
tuvo una idea sensacional: usar el motor V8 de Google y sacarlo fuera del
navegador. Su sencillo gesto cambió el mundo de la tecnología tal y como lo
ejecutaban como cualquier otro software por parte del sistema operativo.
paquetes por defecto que incluye la instalación de Node (a partir de la versión 0.6.3).
siguientes aspectos:
▸ Expresiones y sentencias.
tipo de los valores (si es un número, una palabra, una lista de cosas, etc.), sino que
JavaScript los averigua de manera automática y, además, estos pueden cambiar sin
ningún problema. Por ejemplo, es posible especificar que un valor vale inicialmente 1
Figura 1. Variable cuyo tipo de dato cambia dinámicamente. Fuente: elaboración propia.
error gravísimo en otros lenguajes tipados como Java o C++. En estos lenguajes,
una vez que una variable ha sido especificada con un valor (de manera implícita o
cambiarlo. Esto busca que el código sea más seguro y menos propenso
Hay otros muchos lenguajes dinámicos además de JavaScript, los principales serían
Ruby y Python.
JavaScript cuenta con la instrucción typeof para averiguar el tipo de una variable:
sintáctica especial que se comporta de manera parecida a una función, pero que se
operando).
Cadenas de texto
básico. Para definir una cadena de texto, simplemente tenemos que poner letras
para crear una cadena de texto, deberíamos usar una función constructora junto con
Sin embargo, como este método es algo farragoso, JavaScript permite crear cadenas
Las cadenas de texto plantilla o template literals son un tipo especial de cadenas
de texto. Este tipo de cadenas hace uso de las comillas invertidas. Además, los
sobre el dato.
Otros métodos interesantes son los siguientes (la funcionalidad perseguida por cada
Números
Los números en JavaScript pueden ser enteros (4, 1, 0, -98, etc.) o en coma flotante
(1.21). Al igual que las cadenas de texto, los números también cuentan con métodos
La diferencia es que, en vez de usar un único punto, tenemos que usar dos para
cuenta con la palabra reservada NaN (not a number). Por ejemplo, no es posible
Booleanos
Los valores booleanos solo pueden ser verdaderos o falsos (true o false). Además,
las siguientes expresiones se consideran falsas (lo mismo que false) en JavaScript:
Como regla general podemos decir que undefined suele ser usado por JavaScript de
modo automático (cuando no hay valor) y null es utilizado por los programadores de
manera manual para dejar bien claro que algo no tiene ningún dato asignado.
Por ejemplo:
Con esto queremos dejar claro explícitamente que x no tiene valor alguno o que x
está vacía.
versión 2015 de JavaScript, también conocida como ES6, las variables deben
▸ Cuando usamos const , puede decirse que en este caso se trata de una *constante*
También, al declarar una variable como constante debe quedar «inicializada» (debe
La afirmación anterior tiene una excepción: los objetos. Es decir, aunque una
variable se declare como const , si hace referencia a un objeto, sí que es posible
Figura 16. Modificando objetos aún con const . Fuente: elaboración propia.
Antiguamente, en lugar de let y const solo existía la palabra var para identificar algo
como una variable. A efectos prácticos, var se parece mucho a let . Entonces, ¿por
qué dos términos para la misma funcionalidad? Muy sencillo. Cuando una variable se
definición de un valor.
Ámbito global
pero no siempre es la mejor idea. Lo ideal es solo declarar variables lo más cerca
posible (en términos de ámbito) de dónde van a ser utilizadas. Existen muchas
razones para esta práctica: desde la limpieza y legibilidad del código a la seguridad.
Ámbito local
Lo primero que tenemos que decir del ámbito local es que, en realidad, existen tantos
ámbitos locales como bloques hayamos definido. En cada bloque tenemos un ámbito
local. Por descontado, cada bloque define su ámbito local y una variable definida ahí
solo es visible dentro del bloque. Si el nombre de una variable se declara fuera y
dentro de un bloque, el valor que cuenta para el bloque es el definido en este último.
más externo.
Un ejemplo de lo anterior:
Cuando asignamos un valor a una variable, esta asignación puede ser directa o
sí).
Ahora x e y contienen una copia distinta y personal de la cadena de texto «hola», por
lo que si ahora modificamos una de ellas (x, por ejemplo), la otra permanece
Figura 22. Comprobando el efecto de las asignaciones por valor. Fuente: elaboración propia.
Expresiones básicas
Haciendo uso de todos los elementos que se han presentado hasta ahora, hemos
expresión muy común son las comparaciones. Este tipo de sentencias constan de
operador de igualdad (==), que en JavaScript devolverá true si los operandos son
más exhaustiva que tenga en cuenta el tipo de los operandos, se recomienda utilizar
Algunos ejemplos:
operadores lógicos como pueden ser || (OR lógico) y && (AND lógico). El
lenguajes de programación.
Muy a menudo, es necesario que una parte del código JavaScript escrito se ejecute
La cláusula
If
seguida de una condición lógica (que se evaluará como true o false) define un bloque
sería:
Junto a la cláusula if tenemos otras dos que suelen acompañarla casi siempre. Son
hacer uso de else if para tratar los diferentes escenarios. Por último, si ninguna de las
condiciones anteriores se cumplió, podemos hacer uso de else para indicar las
Observemos un ejemplo:
hacer uso del operador ternario para comprobar una condición y actuar en
Un ejemplo sería:
La cláusula switch
Una estructura iterativa nos permite construir bucles en los cuáles es posible repetir
una o varias líneas de código. Estudiaremos por tanto los bucles for y while.
Bucles while
Los bucles while ejecutan las instrucciones que haya dentro de un bloque mientras la
Nótese que se ha hecho uso de template literals para intercalar cadenas de texto
con el valor de las variables con las que estamos trabajando. Es muy importante que
el código que se encuentre dentro del bloque del while pueda dar lugar a un cambio
en la condición que se está evaluando. De no ser así, se podría formar un bucle
infinito, algo que casi con toda seguridad será un comportamiento no deseado.
Existe una variación del bucle while llamada do while. La diferencia entre ambas es
que la versión do while se ejecutará siempre una vez como mínimo, ya que la
condición del while se comprobará al final del bloque, mientras que esto no ocurre
Bucles for
Al igual que ocurría con los bucles while, es necesario definir bien la condición, el
Los bucles for son muy usados para recorrer estructuras de datos, como
próxima sección.
Existe una variante de este bucle llamado forEach. Realmente es un método que se
ejecuta sobre los arrays. El método forEach ejecuta una función para cada uno de los
▸ Vectores o arrays.
▸ Conjuntos o sets.
▸ Mapas.
Lo primero que debemos conocer sobre estos tres tipos de estructuras es que son
objetos. En JavaScript existen diferentes tipos de datos básicos. Pues bien, todo
variables tienen una copia personal de un mismo dato), pero los objetos
Una vez dicho esto, pasamos a detallar cada una de las estructuras indicadas
anteriormente.
Vectores o
arrays
Un vector (en adelante, array) es un conjunto de valores indexado. Esto quiere decir
que cada elemento del array tiene una posición concreta, definida por un índice y
que, salvo que se produzcan modificaciones, se mantendrá durante toda su vida útil.
asociado a cada elemento para obtenerlo. Por ejemplo, en el array creado antes,
podemos obtener el valor del primer elemento de este, accediendo al elemento cero
de la estructura (recordemos que el cero se refiere al primer elemento):
modificándolo?
asociado a dicha referencia. No es, por tanto, posible redefinir la referencia a la que
Conjuntos
una estructura que representa una colección de valores únicos (no se pueden
repetir).
que no contiene duplicados. Para crear un set vacío recurrimos a una función
Este método devuelve nuevamente el set con el nuevo elemento añadido, por lo que
es posible encadenar nuevos.add(). Ejemplo:
podemos modificar el set. Esto es así porque los sets son también objetos y estos
sí son modificables a pesar de que hayan sido introducidos mediante la cláusula
const.
La afirmación anterior tiene una excepción: los objetos. Sí es posible añadir a un
set dos objetos que aparentemente son iguales. Esto es así porque los objetos se
memoria distintos y, por ende, son tratados como entes independientes por parte de
Figura 44. Los conjuntos no contienen referencias duplicadas 1. Fuente: elaboración propia.
Se trataría de un set con dos elementos iguales (dos objetos vacíos, en este caso),
pero que son independientes desde el punto de vista lógico. Veamos otro ejemplo:
Figura 45. Los conjuntos no contienen referencias duplicadas 2. Fuente: elaboración propia.
Aunque los dos arrays [1,2] y [1,2] contienen la misma información a nuestros ojos,
se trata de objetos distintos (a los ojos de JavaScript). Recordemos que los arrays en
vacío:
afianzar algunos de los conceptos que hemos tratado en esta sección con más
ejemplos:
Accede al vídeo:
https://unir.cloud.panopto.eu/Panopto/Pages/Embed.aspx?id=04efe442-0d61-
4bfb-8ee0-b1d800df1e83
Mapas
Los mapas no son más que listas de parejas clave-valor, donde la clave y el valor
Las claves de un mapa deben ser únicas (algo que ocurre también en los sets). No
cuentan con una forma literal para su definición, por lo que para crearlos es
Al igual que ocurría con los sets, los mapas tienen distintos métodos que nos
▸ Método set (clave, valor), que permite añadir una nueva pareja clave-valor al mapa.
▸ Método get (clave), a partir de la clave, nos devuelve su valor asociado, si existe.
▸ Método has (clave), que devolverá true o false en función de si el mapa contiene
▸ Método delete (clave), el cual permitirá borrar una entrada del mapa que tenga la
clave especificada.
GitHub. https://github.com/UnirCs/DWFS-GLOBAL/tree/master/Tema_2
¿Alguna vez has utilizado un filtro en una red social? ¿Sabes que las imágenes que
consiguen los fabulosos resultados que vemos en Instagram o Snapchat? Con este
ejercicio, vamos a aprender a tratar con los píxeles de las imágenes, usando
JavaScript.
aplican filtros RGB a una imagen. Completa las funciones siguiendo las instrucciones
del comentario en el fichero actividad.js . No deberías tener que modificar el código en
Por favor, no cambies las líneas que ya están escritas: en cada función ya viene
Instalación
Debes descargar Node.js desde su página oficial, que traerá incluido NPM. Una vez
tengáis NodeJS y NPM instalado, en la terminal de vuestro IDE tenéis que escribir
npm install fs
npm install save-pixels
npm install get-pixels
npm install deasync
npm install ndarray
Operativa básica
Al final del código, hay una sentencia de ejecución que guarda en output la imagen
Teoría de píxeles
La función getPixels() devuelve una matriz de pixeles RGB. Una matriz no es más que
un array con arrays en sus posiciones para representar los píxeles en la pantalla. A
su vez, cada píxel es un array con 3 posiciones, una para cada valor RGB. Por
Rojo Verde
Azul Blanco
Como puedes ver, tenemos un array con 2 filas. En cada una de las filas tenemos 2
columnas. Finalmente, en cada fila y columna tenemos un array con los 3 valores
vamos a usar JavaScript para hacer una preselección de los asientos que un usuario
En el tema anterior, diseñamos una sala de cine. Se incluía una matriz de asientos
una matriz para representar los asientos. Serán objetos y tendrán dos atributos. El id
que será un entero, y el estado que será un booleano ( true si está ocupada y false
si está libre). Se pide desarrollar en JavaScript la función suggest que recibe como
asientos preseleccionados.
Queda lista para ser tratada. Para probar la efectividad del algoritmo, puedes
tu gusto.
// Inicializar la matriz
let butacas = setup();
// Imprimir la matriz
console.log(butacas);
manager
Cláusula switch
Método forEach
y/forEach
Documentación de JavaScript
A. Not a Negation.
C. Nano.
A. Un objeto.
valor.
A. Exp.
B. Power.
C. e.
D. ^.
B. Dobles comillas.
8. JavaScript admite solo comillas dobles para indicar una cadena de texto:
A. Verdadero.
B. Falso.
A. Verdadero.
B. Falso.
D. No existe en JavaScript.