Beruflich Dokumente
Kultur Dokumente
En este primer
artículo vamos a conocer JavaScript desde un nivel muy general, contestando las
preguntas ¿Qué es? y ¿Qué hace?, con el propósito de que te sientas a gusto al
usar JavaScript.
Objetivo: Familiarizarse con JavaScript , qué es, qué se puede hacer y cómo usarlo
en una página web.
Definición GeneralSección
JavaScript es un lenguaje de programación que te permite realizar actividades
complejas en una página web — cada vez más una página web hace más cosas
que sólo mostrar información estática — como mostrar actualizaciones de
contenido en el momento, interactuar con mapas, animaciones gráficas 2D/3D etc.
— puedes estar seguro que JavaScript está involucrado. Es la tercera capa del
pastel de los estándares en las tecnologías para la web, dos de las cuales son
(HTML y CSS), hablaremos de ellas más adelante con más detalle en otra parte de
nuestra Área de
Aprendizaje.
p {
font-family: 'helvetica neue', helvetica, sans-serif;
letter-spacing: 1px;
text-transform: uppercase;
text-align: center;
border: 2px solid rgba(0,0,200,0.6);
background: rgba(0,0,200,0.3);
color: rgba(0,0,200,0.6);
box-shadow: 1px 1px 2px rgba(0,0,200,0.4);
border-radius: 10px;
padding: 3px 10px;
display: inline-block;
cursor:pointer;
}
para.addEventListener('click', updateName);
function updateName() {
var name = prompt('Enter a new name');
para.textContent = 'Player 1: ' + name;
}
Hagamos un breve recordatorio del historial de lo que sucede cuando cargas una
página web en tu navegador (primero hablamos acerca de cómo funciona CSS en
nuestro artículo). Cuando cargas una página Web en tu navegador, tu código
(HTML, CSS y JavaScript) es leído dentro de un ambiente de ejecución (pestaña
del navegador). Esto es como una fábrica que coge la materia prima (Las líneas de
código) y lo presenta como el producto final (la página Web).
El lenguaje JavaScript es ejecutado por el motor del navegador de JavaScript,
luego que el código HTML y CSS han sido juntados y congregados dentro de la
página Web. Esto asegura que el estilo y la estructura de la página están en su
lugar en el momento en que JavaScript comienza a ejecutarse.
Esto es algo muy bueno, algo muy común en el uso de JavaScript para modificar
dinámicamente el código HTML y CSS, para que la interfaz de usuario sea
actualizada, usando DOM o el modelo de objeto de documento (como se mencionó
anteriormente). Si al cargar JavaScript e intentar hacerlo funcionar antes de que
sea leído el código HTML y CSS, se verá afectado, ocurriendo errores de
programación.
Seguridad de navegadorSección
Cada pestaña del navegador se considera como una cubeta en un compartimento
separado para hacer funcionar el código (en términos técnicos las cubetas son
llamadas “ambientes de ejecución”) – significa que en la mayoría de los casos los
códigos en cada pestaña funcionan completamente separados, y el código en una
pestaña no puede afectar directamente el código de otra pestaña, o en otro
navegador. Esta es una buena medida de seguridad – si este no fuera el caso,
entonces los piratas informáticos podrían estar modificando tu código para robar
información de otro sitio web, y otras tantas cosas malas.
Nota: Existen formas para enviar código e información entre diferentes sitios
web/pestañas de una manera segura, pero estas son técnicas avanzadas que no
cubriremos en este curso.
JavaScript funciona con un ordenSección
Cuando el navegador encuentra un bloque de JavaScript, generalmente lo corre en
orden, de arriba hacia abajo. Esto significa que tienes que tener cuidado en qué
orden pones las cosas. Por ejemplo, regresemos al bloque de JavaScript que
vimos en nuestro primer ejemplo:
para.addEventListener('click', updateName);
function updateName() {
var name = prompt('Enter a new name');
para.textContent = 'Player 1: ' + name;
}
Aquí seleccionamos un texto del párrafo (línea 1), luego es adherido a un evento
espía (línea 3) entonces cuando el párrafo es cliqueado, el bloque de
código updateName() empieza a funcionar (línea 5 – 8). El código de
bloque updateName() (este tipo de código de bloque reusable son llamados
“funciones”) interactúa con el usuario para preguntar un nuevo nombre, y luego lo
inserta dentro del párrafo para actualizar lo que se esta visualizando.
Si tú cambias el orden de las primeras dos líneas de código, no funcionaría – de
hecho, conseguirás un error de retorno en la consola del desarrollador del
navegador – TypeError: para is undefined. Esto significa que el objeto para no
existe todavía, entonces no podremos añadir un evento espía.
Nota: Este es un error muy común – necesitas ser cuidadoso ya que el objeto de
referencia en tu código debe existir antes de intentar algo con él.
El Interpretador entre el código compiladoSección
Quizás debiste escuchar sobre los términos interpretador y el compilador en
contexto de programación, JavaScript es un lenguaje de interpretación – el código
se hace funcionar de arriba hacia abajo y el resultado de leerlo de esta manera
hace que inmediatamente responda. No tienes que transformar tu código en algo
diferente antes de que el navegador lo haga por ti.
En otra mano los lenguajes compilados son transformados (compilado) antes de
que sean leídos por la computadora. Por ejemplo C/C++ son lenguajes
congregados para compilarlos para luego ser leídos por la computadora.
</script>
8. Ahora, añadiremos algo de JavaScript dentro de nuestro tag <script> para que la
página haga algo más interesante – añade el siguiente código justo debajo de la
línea de código "// JavaScript goes here":
9. function createParagraph() {
10. var para = document.createElement('p');
11. para.textContent = 'You clicked the button!';
12. document.body.appendChild(para);
13. }
14.
15. var buttons = document.querySelectorAll('button');
16.
17. for (var i = 0; i < buttons.length ; i++) {
18. buttons[i].addEventListener('click', createParagraph);
19. Guarda tu archivo y actualiza tu navegador – ahora deberías ver cuando das clic en
el botón, que un nuevo párrafo es generado y posicionado debajo de él.
Nota : Si al parecer tu ejemplo no funciona, revisa tu código paso a paso y asegúrate
que todo lo hayas hecho bien, ¿verificaste si guardaste tu archivo con la
extensión .html? ¿Añadiste el tag <script> justo después del tag </body>?
¿Introduciste el código JavaScript como se mostraba anteriormente? JavaScript es
sensitivo y exigente con mayúsculas y minúsculas, así que necesitas introducir la
sintaxis exactamente como se muestra, de otro modo no funcionará.
Nota: Puedes ver esta versión en GitHub apply-javascript-internal.html (Puedes
verlo en vivo también).
JavaScript ExternoSección
Esto trabaja muy bien, pero, ¿qué pasa si queremos poner nuestro JavaScript en
un archivo externo? Entonces exploremos esto ahora.
function createParagraph() {
var para = document.createElement('p');
para.textContent = 'You clicked the button!';
document.body.appendChild(para);
}
<button onclick="createParagraph()">Click me!</button>
Este demo tiene exactamente la misma funcionalidad tanto como en las dos
secciones anteriores, excepto que el elemento <button> incluye un controlador de
línea onclick para hacer funcionar el código cuando el botón en presionado.
Por favor no hagas esto, de otro modo. Es una mala práctica contaminar tu
HTML con JavaScript, y es ineficiente – Deberías de incluir el
atributo onclick="createParagraph()" en cada botón que quieras para ser aplicado
por JavaScript.
Usar los constructores de JavaScript permite seleccionar todos los botones usando
una sola instrucción. El código que usamos arriba sirve para este propósito
viéndose así:
Esto puede verse un poco más grande que el atributo onclick pero esto funcionará
para todos los botones sin importar cuantos haya en la página, incluso
cuando sean añadidos o removidos. JavaScript no necesita ser cambiado.
Nota: Intenta editar tu versión de apply-javascript.html y añade un poco más de
botones en el archivo. Cuando vuelvas a cargar la página, deberías notar que todos
los botones crean un párrafo cuando son cliqueados. ¿Estupendo no?
ComentariosSección
Así como en HTML y CSS, es posible escribir comentarios dentro de tu código de
JavaScript que serán ignorados por el navegador, simplemente existe para proveer
instrucciones a tus colegas desarrolladores de como el código funciona (y para ti,
por si regresas a tu código después de 6 meses y no recuerdas lo que hiciste). Los
comentarios son muy útiles, deberías usarlos más a menudo, particularmente para
grandes aplicaciones. He aquí dos tipos:
Comentarios de una sola línea escritos después de dos barras inclinadas (//),
Ejemplo:
// I am a comment
/*
I am also
a comment
*/
Entonces por ejemplo, podemos anotar nuestro último demo de JavaScript con
comentarios como:
// Function: creates a new paragraph and append it to the bottom of the HTML
body.
function createParagraph() {
var para = document.createElement('p');
para.textContent = 'You clicked the button!';
document.body.appendChild(para);
}
/*
1. Get references to all the buttons on the page and sort them in an array.
2. Loop through all the buttons and add a click event listener to each one.
ResumenSección
Ahí vas, tus primeros pasos dentro del mundo de JavaScript, hemos comenzado
solamente con teoría, para comenzar a entender por qué usamos JavaScript, y
qué tipo de cosas puedes usar con él. En el camino viste unos cuantos ejemplos de
código y aprendiste cómo JavaScript encaja con el resto del código de tu página
web, entre otras cosas.
Nota: Muchas de las características que vas a ver en JavaScript son las mismas en
otros lenguajes de programación — funciones, bucles, etc. La sintaxis del código es
diferente, pero los conceptos siguen siendo básicamente los mismos.
Pensando como un programadorSección
Una de las cosas mas difíciles de aprender en programación no es la sintaxis que
necesitas aprender sino cómo aplicarla para resolver problemas del mundo real.
Necesitas empezar a pensar como programador — Ésto generalmente implica
buscar descripciones de qué necesita hacer tu programa, determinar qué
características de código necesita para alcanzar esas cosas y cómo hacer que
funcionen juntas.
Teniendo ésto presente, veamos el ejemplo que vamos a construir en este artículo,
y revisemos el proceso general de seccionarlo y divirlo en tareas tangibles.
Imaginemos que tu jefe te ha dado el siguiente resumen para crear este juego:
Quiero que crees un juego sencillo del tipo "adivina el número". Debe elegir un
número aleatorio entre 1 y 100, luego desafiar al jugador a adivinar el número en
10 intentos. Después de cada intento debería decirle al jugador si ha acertado o no
- y si está equivocado, debería decirle si se ha quedado corto, o se ha pasado.
También debería decir los números que ya se han probado anteriormente. El juego
acabará una vez que el jugador acierte o cuando se acaben los intentos. Cuando el
juego se acabe, se le debe dar al jugador la opción de volver a jugar.
Al observar este resumen, lo primero que podemos hacer es empezar a desglosar
el proyecto en tareas simples y realizables, con la mayor mentalidad de
programador posible:
Configuración inicialSección
Para empezar este tutorial, quisiéramos que hicieras una copia local del
archivo number-guessing-game-start.html (en vivo aquí). Ábrelo en tu editor de
texto y en tu navegador web. De momento, puedes ver un sencillo encabezado, un
párrafo de instrucciones y un espacio para introducir un intento de número, pero el
formulario no hará nada por ahora.
El lugar donde agregaremos todo nuestro código es dentro del
elemento <script> en la parte de abajo del HTML.
<script>
</script>
var guessCount = 1;
var resetButton;
Esta sección del código establece las variables que necesitamos para almacenar
los datos que usará nuestro programa. Las variables son básicamente
contenedores de valores (como números o cadenas de texto). Creas una variable
con la palabra clave var seguida del nombre de la variable. A continuación, puedes
asignar un valor a la variable con el signo de igual (=) seguido del valor que deseas
darle.
En nuestro ejemplo:
<p class="guesses"></p>
<p class="lastResult"></p>
<p class="lowOrHi"></p>
Note: Aprenderá mucho más sobre las variables más adelante en el curso,
comenzando con siguiente artículo.
FuncionesSección
A continuación, agrega lo siguiente debajo de tu código JavaScript anterior:
function checkGuess() {
alert('Soy un marcador de posición');
}
Las funciones son bloques de código reutilizables que puedes escribir una vez y
ejecutar una y otra vez, ahorrando la necesidad de seguir repitiendo el código todo
el tiempo. Es realmente útil. Hay varias maneras de definir funciones, pero por
ahora nos concentraremos en un tipo simple. Aquí hemos definido una función
usando la palabra clave function, seguida de un nombre, con paréntesis puestos
después de él. Después de eso ponemos dos llaves ({ }). Dentro de las llaves se
encuentra todo el código que queremos ejecutar cada vez que llamamos a la
función.
Cuando queramos ejecutar el código, escribimos el nombre de la función seguido
de los paréntesis.
Después de presionar Return / Enter , debería aparecer una alerta que dice "Soy
un marcador de posición"; hemos definido una función en nuestro código que
crea una alerta cada vez que la llamamos.
Nota: Aprenderás mucho más sobre las funciones más adelante en el curso.
OperadoresSección
Los operadores de JavaScript nos permiten realizar pruebas, cálculos
matemáticos, unir cadenas y otras cosas similares.
Operador Descripción
+ Suma
- Resta
* Multiplicación
Operador Descripción
/ División
También puede usar el operador + para unir cadenas de texto (en la programación,
esto se llama concatenación). Intente ingresar las siguientes líneas, una a la vez:
var name = 'Bingo';
name;
var hello = ' says hello!';
hello;
var greeting = name + hello;
greeting;
Esto es equivalente a
guessCount++;
guessField.value = '';
guessField.focus();
}
Ésto es un montón de código - uf! Vayamos por cada sección para explicar qué
hace.
La primera línea (línea 2 desde arriba) declara una variable llamada userGuess y
establece su valor al actual ingresado en el campo de texto. También ejecutamos
este valor a través del método incorporado Number(), sólo para asegurarnos que el
valor definitivamente es un número.
Luego nos encontramos con nuestro primer bloque de código condicional (líneas
3-5 desde arriba). un bloque de código condicional te permite ejecutar código de
manera selectiva, dependiendo de que cierta condición sea verdadera o no. Se
asemeja un poco a una función, pero no lo es. La forma más simple de un código
condicional comienza con la palabra clave if, luego unos paréntesis, luego unas
llaves. Dentro de los paréntesis incluímos un test. Si el test resulta verdadero,
ejecutamos el código dentro de las las llaves. Si no, no lo hacemos y pasamos al
siguente segmento de código. En este caso, en test analiza si la
variable guessCount es igual a 1 (por ejemplo, si fue el primer intento del jugador o
no):
guessCount === 1
Si lo es, hacemos que el contenido del texto del parrafo de intentos sea igual a
"intentos previos". Si no, no lo hacemos.
La línea 6 añade el valor actual de userGuess al final del párrafo de guesses, más un
espacio en blanco así hay espacio entre cada intento que se muestra.
El siguiente bloque (líneas 8-24 de arriba) realiza un par de corroboraciones:
o El primer if(){ } comprueba si el intento del jugador es igual
al randomNumberestablecido al comienzo de nuestro JavaScript. Si lo es, el jugador
ha adivinado correctamente y se ha ganado el juego, así que le mostramos al
jugador un mensaje de felicitaciones en color verde, limpiamos los contenidos del
cuadro de información de intentos Low/High, y ejecutamos una función
llamada setGameOver(), que luego discutiremos.
o Ahora hemos encadenado otro test al final del último usando la estructura else
if(){ }. Éste comprueba si este turno es el último turno del jugador. Si lo es, el
programa hace lo mismo que en el bloque anterior, excepto que en vez de mostrar
un mensaje de felicitaciones, muestra uno de fin del juego.
o El bloque final encadenado al final de este código (el else { }) contiene código que
sólo es ejecutado si ninguno de los otros dos tests anteriores dio verdadero (por
ejemplo si el si el jugador no tuvo ningún acierto pero aún le quedan intentos). En
este caso, les decimos que son incorrectos, luego realizamos otro test condicional
para comprobar si el intento fue más alto o más bajo que la respuesta, mostrando
un mensaje para decirle si tiene que ir más alto o bajo, según sea apropiado.
Las últimas tres líneas en la función (línea 26-28 de arriba) nos preparan para que
se envíe el siguiente intento. Añadimos 1 a la variable guessCount así el jugador usa
su turno (++ es una operación de incremento - incremento en 1), y vaciamos el valor
del campo de texto, dejándolo listo para que el siguiente intento sea ingresado.
EventosSección
A esta altura, hemos implementado muy bien la función checkGuess(), pero no hará
nada porque aún no la hemos llamado. Lo ideal sería que sea llamada cuando se
presiona el botón de "Enviar intento", y para hacer esto necesitamos usar un
evento. Los eventos son acciones que ocurren en el navegador, como clikear sobre
un botón , o una página que se carga, un video que se reproduce, en respuesta a
los cuales podemos ejecutar bloques de código. Los constructos que escuchan si
escucha algún evento se llaman escuchadores de eventos, y los bloques de
código ejecutados en respuesta a la puesta en marcha del evento se
llaman manejadores de eventos.
Añade la siguiente línea debajo de tu función checkGuess():
guessSubmit.addEventListener('click', checkGuess);
Las primeras dos líneas deshabilitan la entrada de texto y el botón al fijar sus
propiuedades deshabilitadas como verdadero. Ésto es necesario, porque si no lo
hiciéramos, el usuario podría seguir enviando más intentos luego de que el juego
hubiera acabado, lo cual complicaría las cosas.
Las siguientes tres líneas generan un elemento <button>, fijan su etiqueta de texto
a "Comenzar nuevo juego", y lo añaden al pie de nuestro HTML existente.
La línea final establece un escuchador de eventos en nuestro botón nuevo de
manera que cuando se haga click sobre él, una función llamada resetGame() sea
ejecutada.
Ahora necesitamos definir esta función también! Agrega el siguiente código, de
nuevo al final de tu JavaScript:
function resetGame() {
guessCount = 1;
resetButton.parentNode.removeChild(resetButton);
guessField.disabled = false;
guessSubmit.disabled = false;
guessField.value = '';
guessField.focus();
lastResult.style.backgroundColor = 'white';
Este más bien largo bloque de código reinicia todo completamente al estado en el
que estaba el juego al comienzo, así el jugador puede jugar nuevamente. Ésto:
BuclesSección
Una parte del código anterior, al cual tenemos que examinar más en detalle, es el
bucle for. En programación, los bucles son un concepto muy importante que te
permiten seguir ejecutando un segmento de código una y otra vez, hasta que se
cumpla una condición determinada.
Para comenzar, ve nuevamente a tu consola JavaScript de las herramientas de
Desarrollador del navegador e ingresa lo siguiente:
for (var i = 1 ; i < 21 ; i++) { console.log(i) }
Este código crea una variable que contiene una lista de todos los párrafos dentro
de <div class="resultParas"> usando el método querySelectorAll(), luego realiza
bucles a través de cada uno, removiendo el contenido textual a su paso.
Una pequeña discusión acerca de objetosSección
Agreguemos una última mejora antes de que nos metamos en esta discusión.
Agrega la siguiente línea justo debajo de la línea var resetButton; cerca del borde
superior de tu JavaScript, luego guarda tu archivo:
guessField.focus();
Esta línea utiliza el método focus() para poner el cursor de texto en el campo de
texto <input> apenas se carga la página, lo que significa que el usuario puede
comenzar a ingresar su primer intento inmediatamente, y no hace falta que primero
haga click en el campo de formulario. Es sólo una pequeña adición pero mejora la
usabilidad - dándole al usuario una buena señal visual acerca de qué tiene que
hacer para jugar el juego.
Analicemos que está ocurriendo acá un poquito más a fondo. En JavaScript todo
es un objeto. Un objeto es una colección de funcionalidad relacionada almacenada
en un solo grupo. Tú puedes crear tus propios objetos pero eso es bastante
avanzado y no lo vamos a ver sino hasta mucho más adelante en el curso. Por
ahora, simplemente discutiremos de manera breve los objetos integrados que
contiene tu navegador, los cuales te permiten realizar un montón de cosas útiles.
En este caso en particular, primero creamos una variable guessField que almacena
una referencia al campo de formulario de entrada de texto en nuestro HTML - la
siguiente línea puede encontrarse dentro de nuestras declaraciones de variables
cerca del borde superior:
var guessField = document.querySelector('.guessField');
guessField.value = 'Hello';
guesses.value
10. Ahora, sólo por diversión, intenta ingresr las líneas que figuran debajo, una por
una:
Cada elemento en una página tiene una propiedad style, que en sí misma contiene
un objeto cuyas propiedades contienen todos los estilos CSS inline aplicadas a ese
elemento. Ésto permite fijar de manera dinámica nuevos estilos de CSS sobre
elementos usando JavaScript.
Terminamos por ahora...Sección
Así que eso es todo para construir el ejemplo - llegaste al final, bien hecho! Prueba
tu código final, o juega aquí con la versión terminada. Si no puedes lograr que tu
ejemplo funcione, contrástalo con el código fuente.
Tipos de erroresSección
En general, cuando haces algo mal en programación, hay dos tipos de errores
principales con los que te puedes encontrar:
Errores sintácticos: Son los errores de ortografía en tu código que provocan que
tu programa no se ejecute en absoluto, o que deje de funcionar a mitad de camino -
también te van a aparecer mensajes de error. Por lo general no es tan difícil
corregirlos, ¡siempre y cuando conozcas las herramientas correctas y sepas qué
significan los mensajes de error!
Errores lógicos: Estos son errores en donde la sintaxis es correcta pero el código
no resulta lo que tu esperabas, lo cual significa que el programa se ejecuta de
manera exitosa pero da resultados incorrectos. Éstos son más difíciles de arreglar
que los errores sintácticos, ya que generalmente no hay ningún mensaje de error
que te pueda orientar hacia la fuente del error.
Bueno, tampoco es que es así de simple - a medida que hurgues más a fondo,
verás que hay algunos otros diferenciadores. Pero las clasificaciones de arriba vas
a servirnos en esta etapa temprana de tu carrera. Vamos a examinar estos dos
tipos mientras avanzamos.
Un ejemplo erróneoSección
Para comenzar, volvamos a nuestro juego de adivinar el número - excepto que esta
vez vamos a explorar una versión que tiene insertados algunos errores de manera
deliberada. Ve a Github y hazte una copia local de number-game-
errors.html (puedes verlo ejecutado en vivo aquí).
1. Para comenzar, abre la copia local dentro de tu editor de texto favorito, y tu
navegador.
2. Intenta Jugar el juego - notarás que cuando presionas "Enviar Intento" ("Submit
guess"), no funciona!
Nota: Puede suceder que tengas tu propia versión de ejemplo del juego que no
funcione y que quieras arreglar. Igualmente nos gustaría que en este artículo
trabajes con nuestra versión para que puedas aprender las técnicas que estamos
enseñando aquí. Luego puedes regresar y tratar de arreglar tu ejemplo.
En este punto, consultemos la consola de desarrollador para ver si podemos ver
algún error de sintaxis y, luego, tratar de corregirlo. Abajo aprenderás cómo.
Arreglando errores sintácticosSección
Anteriormente en este curso, te hicimos escribir algunos comandos simples de
JavaScript en la consola JavaScript de herramientas de desarrollador (si no te
acuerdas cómo abrirlo en tu navegador, sigue el enlace). Algo aún más útil es que
la consola te brinda mensajes de error cada vez que ocurre algún error sintáctico
dentro del JavaScript que alimenta el motor JavaScript del buscador. Ahora, vamos
a la caza.
1. Ve a la pestaña donde tienes abierto number-game-errors.html, y abre tu consola
JavaScript. Deberías ver un mensaje de error a lo largo de las siguientes
líneas:
guessSubmit.addeventListener('click', checkGuess);
3. Esta vez, el error que se reporta es "TypeError: lowOrHi is null", en la línea 78.
Nota: Null es un valor especial que significa "nada" o "sin valor", así que lowOrHi ha
sido declarada e inicializada, pero no con ningún valor significativo - no tiene
ningún tipo o valor.
Nota: Este error no apareció apenas se cargó la página porque ocurrió dentro de
una función (dentro del bloque checkGuess() { ... }). Como ya aprenderás pronto
más en detalle en nuestro artículo acerca de funciones, el código dentro una función
se ejecuta con un alcance diferente del código fuera de una función. En este caso, el
código no fue ejecutado y el error no saltó sino hasta que la función checkGuess()fue
ejecutada por la línea 86.
4. Fíjate en la línea 78 y verás el siguiente código:
Nota: console.log() es una función depuradora realmente útil que imprime un valor
a la consola. Así que imprimirá el valor de lowOrHi a la consola en cuanto hayamos
tratado de fijarlo en la línea 48.
7. Guarda y refresca, y deberías ahora ver el resultado de console.log() en tu
consola. Como era de esperar, el valor de lowOrHi es null en este punto, así que
definitivamente hay un problema con la línea 48.
8. Pensemos cúal podría ser el problema. La línea 48 está usando el
método document.querySelector() para tener la referencia de un elemento al
seleccionarlo con un selector CSS. Revisando más a fondo nuestro archivo,
encontramos el párrafo en cuestión:
<p class="lowOrHi"></p>
9. Entonces, aquí necesitamos un selector CSS, que comienza con un punto (.), pero
el selector del método querySelector() en la línea 48 no tiene ningún punto. ¡Ésto
podría ser un problema! Intenta cambiar de lowOrHi a .lowOrHi en la línea 48.
10. Prueba de guardar y refrescar nuevamente, y tu declaración console.log() debería
traerte el elemento <p> que queremos. ¡Uf! Otro error corregido! Ahora puedes
borrar tu línea console.log(), o guardarla como referencia para luego - como tú
quieras.
Nota: Visita nuestra página de referencia TypeError: "x"is (not) "y" para más
detalles acerca de este error.
Errores sintácticos: Tercera rondaSección
1. Si intentas ahora jugar nuevamente, te debería ir un poco mejor - el juego se
debería poder jugar perfectamente bien hasta el final, ya sea porque acertaste con
el número correcto o porque te quedaste sin vidas.
2. En este punto, el juego falla una vez más y nos tira el mismo error que obtuvimos al
comienzo - "TypeError: resetButton.addeventListener is not a function". Sin
embargo, esta vez figura que el error proviene de la línea 94.
3. Revisando la línea 94, es fácil ver que aquí cometimos el mismo error. Nuevamente
tenemos que cambiar addevent.Listener por addEventListener. Hazlo ahora.
Un error de lógicaSección
A esta altura, el juego se debería poder jugar bien; sin embargo, después de haber
jugado un par de veces notarás, indudablemente, que el número "al azar" que
debes adivinar es siempre 0 o 1. ¡No es precisamente así la manera en que
queremos jugar!
En algún lugar hay, obviamente, un error en la lógica del juego - el juego no nos tira
ningún error, simplemente no está jugando bien.
1. Busca la variable randomNumber y las líneas donde se estableció por primera vez el
número al azar. La instancia que almacena el número al azar que queremos
adivinar al comienzo del juego debería estar alrededor de la línea número 44:
var randomNumber = Math.floor(Math.random()) + 1;
Y la que genera el número al azar antes de cada juego subsecuente está alrededor
de la línea 113:
randomNumber = Math.floor(Math.random()) + 1;
2. Para verificar si estas líneas son, en efecto, el problema, vayamos nuevamente con
nuestra amiga console.log() - inserta la siguiente línea directamente debajo de
cada una de las dos líneas anteriores.
console.log(randomNumber);
3. Guarda y refresca, y luego juega un par de veces - verás que randomNumber es igual
a 1 en cada punto en donde está conectado a la consola.
Desentrañando la lógicaSección
Para arreglar ésto, consideremos cómo está funcionando esta línea. Primero,
invocamos Math.random(), que genera un número decimal al azar entre 0 y 1, por
ejemplo: 0.5675493843.
Math.random()
Math.floor(Math.random()*100);
Por consiguiente, si queremos agregar 1 para que nos dé un número al azar entre
1 y 100:
Math.floor(Math.random()*100) + 1;
Intenta cambiar ambas líneas, luego guárdalas y refresca - ¡el juego debería ahora
funcionar de la manera que queremos!
Ésto nos tira un error porque piensa que estás tratando de hacer algo diferente.
Deberías asegurarte de no confundir el operador de asignación (=) - que fija la
variable para que sea igual a un valor - con el operador de igualdad estricta (===),
testea si un valor es igual a otro, y tira un resultado verdadero/falso.
Nota: Visita nuestra página de referencia SintaxError: missing ; before
statement para más detalles acerca de éste error.
El programa siempre dice que has ganado, más allá de lo que hayas
ingresadoSección
Ésto podría ser otro síntoma de haber confundido los operadores de asignación y
de igualdad estricta. Por ejemplo, si fuésemos a cambiar esta línea dentro
de checkGuess():
if (userGuess === randomNumber) {
if (userGuess = randomNumber) {
el test siempre resultaría verdadero, lo que provocaría que el programa reporte que
se ha ganado el juego. ¡Ten cuidado!
SyntaxError: missing ) after argument listSección
Éste es bastante simple - generalmente significa que te ha faltado cerrar paréntesis
al final de una llamada de función o método.
Nota: Visita nuestra página de referencia SyntaxError: missing ) after argument
list para más detalles acerca de éste error.
SyntaxError: missing : after property idSección
Este error generalmente se relaciona con un objeto JavaScript formado de manera
incorrecta, pero en este caso lo obtuvimos al cambiar
function checkGuess() {
por
function checkGuess( {
Ésto provocó que el navegador pensara que estamos tratando de pasar los
contenidos de la función a la función como un argumento. ¡Ten cuidado con esos
paréntesis!
Artículo
console.log
depurar
Error
Herramientas de Desarrollador
Principiante
Tutorial
Colaboradores en esta página: Alfacoy, NataliaCba, esencialinux
Última actualización por: Alfacoy, 10 oct. 2018 10:25:31
1. Aprende sobre desarrollo web
2. JavaScript
3. Primeros pasos con JavaScript
4. ¿Qué salió mal? Reparando errores en JavaScript
Temas relacionados
1. Complete beginners start here!
2. Getting started with the Web
Después de leer los dos últimos artículos, ahora debe saber qué es JavaScript, qué
puede hacer por usted, cómo lo usa junto con otras tecnologías web y cuáles son
sus características principales desde un alto nivel. En este artículo vamos a
centrarnos en lo básico, y veremos cómo trabajar con la mayoría de los
componentes más básicos de JavaScript: Variables.
Prerrequisitos: Conocimientos básicos de informática, comprensión básica de HTML y
CSS, comprensión de lo que es JavaScript.
<button>Press me</button>
var button = document.querySelector('button');
button.onclick = function() {
var name = prompt('What is your name?');
alert('Hello ' + name + ', nice to see you!');
}
Para entender por qué esto es tan útil, pensemos en cómo escribiríamos este
ejemplo sin usar una variable. Terminaría luciendo algo como esto:
Puede que no comprendas del todo la sitaxis que estamos utilizando (todavía),
pero serás capaz de entender la idea — si no tuviesemos las variable disponibles,
tendríamos que implementar un bloque gigante de código que compruebe el
nombre enviado por el usuario, y después muestre el mensaje correspondiente
para ese nombre. Obviamente eso es ineficiente (el código es muy grande, incluso
para solo cuatro opciones), y seguiría sin funcionar — posiblemente no pudiese
almacenar todas esas opciones.
Las variables tienen sentido, y a medida que vayas aprendiendo más sobre
JavaScript, te irán resultando más naturales.
Otra cosa especial de las variables es que pueden tener de todo — no solo
cadenas y números. Las variables también pueden contener datos complejos e
incluso funciones enteras con las que hacer cosas asombrosas. Aprenderás más
sobre esto más adelante.
Recuerda que hemos dicho que las variables contienen valores. Es una importante
diferencia a tener en cuenta. Las variables no son valores por sí mismas; son
contenedores de valores. Puedes pensar en ellas con una caja de cartón donde
puedes guardar cosas dentro.
var myName;
var myAge;
Ahora estamos creando dos variable llamadas myName y myAge. Ahora prueba a
escribir estas líneas en la consola de tu navegador, o en la consola de debajo
(Puedes abrir la consola en una pestaña o en una ventana diferente, si así lo
prefieres). Después, prueba creando una variable (o dos) con los nombres que tú
elijas.
Abrir en CodePen Abrir en JSFiddle
Nota: En JavaScript, todas las instrucciones deben terminar con punto y coma (;) —
tu código puede funcionar correctamente para líneas singulares, pero
probablemente no funcionará cuando estés escribiendo múltiples líneas de código
juntas. Procura acostumbrarte a incluirlo.
Puedes probar si estos valores existen ahora en el entorno de ejecución tecleando
únicamente el nombre de las variables, por ejemplo:
myName;
myAge;
Ahora mismo no tienen ningún valor, son contenedores vacíos. Cuando tecleas el
nombre de las variables, recibirás de vuelta el resultado undefined. Si las variables
no existen, recibirás un mensaje de error — prueba a teclear:
scoobyDoo;
Nota: No confundas una variable que existe y que no tiene asignado ningún valor,
con una variable que no existe — son cosas diferentes.
Inicializar una variableSección
Una vez que has declarado la variable, puedes inicializarla con un valor. Haz esto
escribiendo el nombre de la variable, seguido del signo de igual (=), continuado por
el valor que le quieres dar. Por ejemplo:
myName = 'Chris';
myAge = 37;
Intenta volver a la consola y escribe estas líneas. You should see the value you've
assigned to the variable returned in the console to confirm it, in each case. Again,
you can return your variable values by simply typing their name into the console —
try these again:
myName;
myAge;
Probablemente esto sea lo que hagas la mayoría del tiempo, es más rápido que
hacer las dos acciones en líneas de código diferentes.
Note: If you write a multiline JavaScript program that declares and initializes a
variable, you can actually declare it after you initialize it and it will still work. This
is because variable declarations are generally done first before the rest of the code is
executed. This is called hoisting — read var hoisting for more detail on the subject.
Actualizando una variableSección
Una vez que has inicializado la variable con un valor, puedes cambiar (o actualizar)
ese valor simplemente dándole un valor diferente. Intenta introducir las siguientes
líneas en tu consola:
myName = 'Bob';
myAge = 40;
You shouldn't use other characters because they may cause errors or be hard to
understand by an international audience.
Don't use underscores at the start of variable names — this is used in certain
JavaScript constructs to mean specific things, so may get confusing.
Don't use numbers at the start of variables. This isn't allowed and will cause an
error.
A safe convention to stick to is so-called "lower camel case", where you stick
together multiple words, using lower case for the whole first word and then
capitalize subsequent words. We've been using this for our variable names in the
article so far.
Make variable names intuitive, so they describe the data they contain. Don't just use
single letters/numbers, or big long phrases.
Variables are case sensitive — so myage is a different variable to myAge.
One last point — you also need to avoid using JavaScript reserved words as your
variable names — by this, we mean the words that make up the actual syntax of
JavaScript! So you can't use words like var, function, let, and for as variable
names. Browsers will recognize them as different code items, and so you'll get
errors.
Note: You can find a fairly complete list of reserved keywords to avoid at Lexical
grammar — keywords.
Good name examples:
age
myAge
init
initialColor
finalOutputValue
audio1
audio2
1
a
_12
myage
MYAGE
var
Document
skjfndskjfnbdskjfb
thisisareallylongstupidvariablenameman
var
Document
Prueba a crear unas cuantas variables más, con la siguiente guía en mente.
Tipos de variablesSección
There are a few different types of data we can store in variables. In this section we'll
describe these in brief, then in future articles you'll learn about them in more detail.
So far we've looked at the first two, but there are others.
NúmerosSección
You can store numbers in variables, either whole numbers like 30 (also called
integers) or decimal numbers like 2.456 (also called floats or floating point
numbers). You don't need to declare variable types in JavaScript, unlike some other
programming languages. When you give a variable a number value, you don't
include quotes:
var myAge = 17;
StringsSección
Strings are pieces of text. When you give a variable a string value, you need to
wrap it in single or double quote marks, otherwise JavaScript will try to intepret it as
another variable name.
var dolphinGoodbye = 'So long and thanks for all the fish';
BooleanosSección
Booleans are true/false values — they can have two values, true or false. These
are generally used to test a condition, after which code is run as appropriate. So for
example, a simple case would be:
var iAmAlive = true;
This is using the "less than" operator (<) to test whether 6 is less than 3. As you
might expect, it will return false, because 6 is not less than 3! You will learn a lot
more about such operators later on in the course.
ArraysSección
An array is a single object that contains multiple values enclosed in square brackets
and separated by commas. Try entering the following lines into your console:
Once these arrays are defined, you can access each value by their location within
the array. Try these lines:
The square brackets specify an index value corresponding to the position of the
value you want returned. You might have noticed that arrays in JavaScript are zero-
indexed: the first element is at index 0.
To retrieve the information stored in the object, you can use the following syntax:
dog.name
We won't be looking at objects any more for now — you can learn more about those
in a future module.
Loose typingSección
JavaScript is a "loosely typed language", which means that, unlike some other
languages, you don't need to specify what data type a variable will contain (e.g.
numbers, strings, arrays, etc).
For example, if you declare a variable and give it a value encapsulated in quotes,
the browser will treat the variable as a string:
Try entering the four lines above into your console one by one, and see what the
results are. You'll notice that we are using a special function called typeof() — this
returns the data type of the variable you pass into it. The first time it is called, it
should return string, as at that point the myNumber variable contains a string, '500'.
Have a look and see what it returns the second time you call it.
Ahora que hemos analizado los conceptos básicos de las cadenas, aumentemos la
velocidad y comencemos a pensar qué operaciones útiles podemos hacer en
cadenas con métodos integados, como encontrar la longitud de una cadena de
texto, unir y dividir cadenas, sustituyendo un caracter de una cadena por otro, y
más.
Objectivo: Comprender que las cadenas son objetos y aprender a usar algunos de
los métodos básicos disponibles en esos objetos para manipular cadenas.
Esto debería devolver el número 7, porque "mozilla" tiene 7 caracteres. Esto es útil
por muchas razones; por ejemplo, es posible que quieras buscar las longitudes de
una serie de nombres para que puedas mostrarlos en orden de su longitud, o dejar
que un usuario sepa que un nombre ingresado en un campo de formmulario es
demasiado largo o si tiene una longitud determinada.
browserType.indexOf('vanilla');
Puedes usar esto para encontrar todas las instancias de las cadenas
que no contengan la subcadena 'mozilla', o hacer, si usas el operador de
negación, como se muestra a continueción. Podrías hacer algo como esto:
if(browserType.indexOf('mozilla') !== -1) {
// do stuff with the string
}
3. Cuando sabes donde comienza una subcadena dentro de una cadena, y sabes
hasta cuál caracter deseas que termine, puede usarse slice() para extraerla.
Prueba lo siguiente:
browserType.slice(0,3);
4. Además, si sabes que deseas extraer todos los caracteres restantes de una
cadena después de cierto caracter, ¡no necesitas incluir el segundo parámetro! En
cambio, solo necesitas incluir la posición del caracter desde donde deseas extraer
los caracteres restante en la cadena. Prueba lo siguiente:
browserType.slice(2);
browserType.replace('moz','van');
Cada ejemplo viene con un botón de "Reset" , Que puedes utilizar para
reestablecer el código si cometes un error y no puedes hacerlo funcionar
nuevamente, y un botón "Show solution" que puedes presionar para ver una
posible respuesta si te encuentras realmente atorado.
MAN675847583748sjt567654;Manchester Piccadilly
1. Extrae las tres letras del código de estación y almacénalo en una nueva variable.
2. Encuentra el número de índice de caracter del punto y coma.
3. Extrae el nombre de la estación legible por humanos utilizando el número de índice
de caracter del punto y coma a modo de referencia y guardalo en una nueva
variable.
4. Concatenar las dos nuevas variables y un literal de cadena para hacer la cadena
final.
5. Cambia el valor de la variable de result a igual a la cadena final, no a input.
En este último artículo de este módulo, veremos las matrices — una manera
ordenada de almacenar una lista de elementos de datos bajo un solo nombre de
variable. Aquí vemos por qué esto es útil, luego exploramos cómo crear una matriz,
recuperar, agregar y eliminar elementos almacenados en una matriz, y más.
Objectivo: Para entender qué son las matrices y cómo manipularlas en JavaScript.
shopping;
3. En este caso, cada elemento de la matriz es una cadena, pero ten en cuenta que
puedes almacenar cualquier elemento en una matriz — cadena, número, objeto,
otra variable, incluso otra matriz. También puedes mezclar y combinar tipos de
elementos — no todos tienen que ser números, cadenas, etc. Prueba estos:
2. shopping[0];
// returns "bread"
4. shopping[0] = 'tahini';
5. shopping;
Esto tiene otros usos, pero se usa mas comunmente para indicarle a un ciclo que
continúe hasta que haya recorrido todos los elementos de la matriz. Así por
ejemplo:
myArray;
5. myArray.length;
6. myArray[0]; // the first item in the array
7. myArray[1]; // the second item in the array
myNewString;
10. Otra forma de convertir una matriz en cadena es usar el
método toString(). toString() es posiblemente más simple que join() ya que no
toma un parámetro, pero es más limitado. Con join() puedes especificar diferentes
separadores (intenta ejecutar el Paso 4 con un caracter diferente a la coma).
11. var dogNames = ['Rocket','Flash','Bella','Slugger'];
dogNames.toString(); //Rocket,Flash,Bella,Slugger
Antes que nada, para añdir o eliminar un elemento al final de una matriz podemos
usar push() y pop() respectivamente.
1. primero usemos push() — nota que necesitas incluir uno o más elementos que
desees agregas al final de tu matriz. Prueba esto:
2. myArray.push('Cardiff');
3. myArray;
4. myArray.push('Bradford', 'Brighton');
myArray;
newLength;
8. Eliminar el último elemento de una matriz es tan simple como correr pop() en ella.
Prueba esto:
myArray.pop();
removedItem;
myArray;
removedItem;
1. Debajo de // number 1 hay un número de cadena, cada una de las cuales contiene
un nombre de producto y un precio separados por dos puntos. Nos gustaría que
conviertas esto en una matriz y lo almacenamos en una matriz llamda products.
2. En la misma línea que el comentario // number 2 es el comienzo de un ciclo for. En
esta línea, actualmente tenemos i <= 0, que es una prueba condicional que hace
que el bucle que el bucle for se detenga inmediatamente, porque dice "detener
cuando i es menor o igual 0", y i comienza en 0. Nos gustaría que reemplazaras
esto con una prueba condicional que detenga el ciclo cuando i no sea inferior a la
longitud la matriz products .
3. justo debajo del comentario // number 3 queremos que escriba una línea de código
que divide el elemento actual de la matriz (nombre:precio) en dos elementos
separados, uno que contiene solo el nombre y otros que contienen solo el precio.
Si no está seguro de cómo hacerlo, consulte el artículo Métodos de cadenas
útiles para obtener ayuda o, mejor aún, consulte la sección Converting between
strings and arraysde este artículo.
4. Como parte de la línea de código anterior, también querras convertir el precio de
una cadena a un número. Si no pudes recordar como hacerlo, consulta el primer
artículo de cadenas.
5. Hay una variable llamada total que se crea y se le da un valor de 0 en la parte
superior del código. Dentro del ciclo (debajo de // number 4) queremos que
agregues una línea que añade el precio actual del artículoa ese total en cada
iteración del ciclo, de modo que al final del código el total correcto se imprima en la
factura. Es posible que necesites un operador de asignación para hacer esto.
6. Queremos que cambies la línea justo de bajo // number 5 para que la
variable itemText se iguale a "nombre de elemnto actual — $precio de elemento
actual", por ejemplo "Zapatos — $23.99" en cada caso, por lo que la ionformación
correcta artículo está impreso en la factura. Esto es simplemente una
concatenación de cadenas, lo que debería ser familiar para ti.
Aprendizaje Activo: Top 5 búsquedasSección
Un buen uso para los métodos de matriz como push() y pop() es cuando estás
manteniendo un registro de elementos actualmente activos en una aplicación web.
En una escena animada por ejemplo, es posible que tengas una matriz de objetos
que representan los gráficos de fondo que se muestran actualmente, y es posible
que sólo desees que se muestren 50 a la vez, por razones de rendimiento o
desorden. A medida que se crean y agrgan nuevos objetos a la matriz, se puede
eliminar los más antiguos de la matriz para mantener el número deseado.
En este ejemplo vamos a mostrar un uso mucho más simple — aquí te daremos un
sitio de búsqueda falso, con un cuadro de búsqueda. La idea es que cuadno lo
términos se ingresan en eun cuadro de búsqueda, se muetran el top 5 de términos
de búsqueda previos en la lista. Cuando el número de términos supera el 5, el
último término comienza a borrarse cada vez que agregas un nuevo término a la
parte superior, por lo que siempre se muestran los 5 términos anteriores.
Nota: En una aplicación de búsqueda real, probablemente puedas hacer clic en los
términos de búsqueda anteriores para volver a los términos de búsqueda anteriores
y ¡se motrarán los resultados de búsqueda reales! Sololamente lo mantendremos
simple por ahora.
Para completar la aplicación necesitamos:
1. Agregar una línea debajo del comentario // number 1 que agrega el valor actual
ingresado en la entrada de la búsqueda al inicio de la matriz. Esto se puede
recuperar usando searchInput.value.
2. Agrega una línea debajo del comentario // number 2 que elimina el valor
actualmente al final de la matriz.
ConclusiónSección
Después de leer este artículo, estamos seguros de que estaras de acuerdo en que
las matrices parecen bastante útiles; las verás aparecer en todas partes en
JavaScript, a menudo en asociación con bucles para hacer una misma cosa con
cada elemento de la matriz. Te enseñaremos todos los aspectos básicos útiles que
hay que conocer sobre los bucles en el siguiente módulo, pero por ahora debes
darte un aplauso y tomarte un merecido descanso; ¡has trabajado en todos los
artículos de este módulo!
Lo único que queda por hacer es trabajar a través de la evaluación de este módulo,
que te pondrá a prueba tu comprensión de los de los artículos anteriores.
En este último artículo de este módulo, veremos las matrices — una manera
ordenada de almacenar una lista de elementos de datos bajo un solo nombre de
variable. Aquí vemos por qué esto es útil, luego exploramos cómo crear una matriz,
recuperar, agregar y eliminar elementos almacenados en una matriz, y más.
Objectivo: Para entender qué son las matrices y cómo manipularlas en JavaScript.
shopping;
3. En este caso, cada elemento de la matriz es una cadena, pero ten en cuenta que
puedes almacenar cualquier elemento en una matriz — cadena, número, objeto,
otra variable, incluso otra matriz. También puedes mezclar y combinar tipos de
elementos — no todos tienen que ser números, cadenas, etc. Prueba estos:
2. shopping[0];
// returns "bread"
4. shopping[0] = 'tahini';
5. shopping;
Esto tiene otros usos, pero se usa mas comunmente para indicarle a un ciclo que
continúe hasta que haya recorrido todos los elementos de la matriz. Así por
ejemplo:
myArray;
5. myArray.length;
6. myArray[0]; // the first item in the array
7. myArray[1]; // the second item in the array
myNewString;
dogNames.toString(); //Rocket,Flash,Bella,Slugger
Antes que nada, para añdir o eliminar un elemento al final de una matriz podemos
usar push() y pop() respectivamente.
1. primero usemos push() — nota que necesitas incluir uno o más elementos que
desees agregas al final de tu matriz. Prueba esto:
2. myArray.push('Cardiff');
3. myArray;
4. myArray.push('Bradford', 'Brighton');
myArray;
newLength;
8. Eliminar el último elemento de una matriz es tan simple como correr pop() en ella.
Prueba esto:
myArray.pop();
removedItem;
myArray;
removedItem;
1. Debajo de // number 1 hay un número de cadena, cada una de las cuales contiene
un nombre de producto y un precio separados por dos puntos. Nos gustaría que
conviertas esto en una matriz y lo almacenamos en una matriz llamda products.
2. En la misma línea que el comentario // number 2 es el comienzo de un ciclo for. En
esta línea, actualmente tenemos i <= 0, que es una prueba condicional que hace
que el bucle que el bucle for se detenga inmediatamente, porque dice "detener
cuando i es menor o igual 0", y i comienza en 0. Nos gustaría que reemplazaras
esto con una prueba condicional que detenga el ciclo cuando i no sea inferior a la
longitud la matriz products .
3. justo debajo del comentario // number 3 queremos que escriba una línea de código
que divide el elemento actual de la matriz (nombre:precio) en dos elementos
separados, uno que contiene solo el nombre y otros que contienen solo el precio.
Si no está seguro de cómo hacerlo, consulte el artículo Métodos de cadenas
útiles para obtener ayuda o, mejor aún, consulte la sección Converting between
strings and arraysde este artículo.
4. Como parte de la línea de código anterior, también querras convertir el precio de
una cadena a un número. Si no pudes recordar como hacerlo, consulta el primer
artículo de cadenas.
5. Hay una variable llamada total que se crea y se le da un valor de 0 en la parte
superior del código. Dentro del ciclo (debajo de // number 4) queremos que
agregues una línea que añade el precio actual del artículoa ese total en cada
iteración del ciclo, de modo que al final del código el total correcto se imprima en la
factura. Es posible que necesites un operador de asignación para hacer esto.
6. Queremos que cambies la línea justo de bajo // number 5 para que la
variable itemText se iguale a "nombre de elemnto actual — $precio de elemento
actual", por ejemplo "Zapatos — $23.99" en cada caso, por lo que la ionformación
correcta artículo está impreso en la factura. Esto es simplemente una
concatenación de cadenas, lo que debería ser familiar para ti.
Aprendizaje Activo: Top 5 búsquedasSección
Un buen uso para los métodos de matriz como push() y pop() es cuando estás
manteniendo un registro de elementos actualmente activos en una aplicación web.
En una escena animada por ejemplo, es posible que tengas una matriz de objetos
que representan los gráficos de fondo que se muestran actualmente, y es posible
que sólo desees que se muestren 50 a la vez, por razones de rendimiento o
desorden. A medida que se crean y agrgan nuevos objetos a la matriz, se puede
eliminar los más antiguos de la matriz para mantener el número deseado.
En este ejemplo vamos a mostrar un uso mucho más simple — aquí te daremos un
sitio de búsqueda falso, con un cuadro de búsqueda. La idea es que cuadno lo
términos se ingresan en eun cuadro de búsqueda, se muetran el top 5 de términos
de búsqueda previos en la lista. Cuando el número de términos supera el 5, el
último término comienza a borrarse cada vez que agregas un nuevo término a la
parte superior, por lo que siempre se muestran los 5 términos anteriores.
Nota: En una aplicación de búsqueda real, probablemente puedas hacer clic en los
términos de búsqueda anteriores para volver a los términos de búsqueda anteriores
y ¡se motrarán los resultados de búsqueda reales! Sololamente lo mantendremos
simple por ahora.
Para completar la aplicación necesitamos:
1. Agregar una línea debajo del comentario // number 1 que agrega el valor actual
ingresado en la entrada de la búsqueda al inicio de la matriz. Esto se puede
recuperar usando searchInput.value.
2. Agrega una línea debajo del comentario // number 2 que elimina el valor
actualmente al final de la matriz.
ConclusiónSección
Después de leer este artículo, estamos seguros de que estaras de acuerdo en que
las matrices parecen bastante útiles; las verás aparecer en todas partes en
JavaScript, a menudo en asociación con bucles para hacer una misma cosa con
cada elemento de la matriz. Te enseñaremos todos los aspectos básicos útiles que
hay que conocer sobre los bucles en el siguiente módulo, pero por ahora debes
darte un aplauso y tomarte un merecido descanso; ¡has trabajado en todos los
artículos de este módulo!
Lo único que queda por hacer es trabajar a través de la evaluación de este módulo,
que te pondrá a prueba tu comprensión de los de los artículos anteriores.