JavaScript

¿Qué es JavaScript?

Si HTML puede ser considerado como el esqueleto, y CSS es equivalente a la piel, pintura y estilo, JavaScript es el alma y de un sitio web. JavaScript es un lenguaje de programación o de secuencias de comandos que te permite implementar funciones complejas en páginas web, cada vez que una página web hace algo más que sentarse allí y mostrar información estática para que la veas, muestra oportunas actualizaciones de contenido, mapas interactivos, animación de Gráficos 2D/3D, desplazamiento de máquinas reproductoras de vídeo, etc., puedes apostar que probablemente JavaScript está involucrado. Es la tercera capa del pastel de las tecnologías web estándar. Con JavaScript puedes, entre otras cosas, hacerlo siguiente:  - Crear elementos HTML temporales, no escritos en el código original.  - Modificar elementos HTML existentes, sus atributos y propiedades.  - Eliminar elementos HTML existentes.  - Modificar secciones enteras para aumentar el dinamismo de tu página web.  - Crear páginas web que solo necesitan cargar 1 sola vez, y cuyo contenido va cambiando conforme el usuario interactúa con la página.  - Cálculo, validación o eliminación de datos ingresados por el usuario.  - Creación, envío y validación de formularios.  - Re-direcciones a otras páginas, internas o externas, sin necesidad de etiquetas <a>.  - Creación de Alertas y Confirmaciones, así como la activación o prevención de eventos. Y la lista podría ser 10 veces más larga y estaríamos solo rasgando la superficie pues la realidad es que JavaScript tiene un control completo del documento web cargado en tu navegador y se puede usar para modificarlo según sea requerido. La realidad es que esta tecnología requiere su propia guía, que exponga detalladamente todas sus bondades, sin embargo y como ya se ha establecido, nuestra intensión es generar en el lector focos de curiosidad para que sean el punto de partida a una mayor investigación. Es por este motivo que no vamos a revisar la profundidad de JavaScript en esta guía básica, sino a conocer brevemente los aspectos de los cuales se compone, algunos de sus usos básicos más útiles y las convenciones que debemos tener en consideración a la hora de utilizarlo. No queríamos comenzar sin aclarar que el nombre de esta tecnología siempre ha producido confusión, pues da la impresión de que el lenguaje es una prolongación de Java, y fue considerada por muchos como una estrategia de mercadotecnia de Netscape (su empresa creadora), sin embargo JavaScript y Java son dos lenguajes completamente diferentes y es importante aclararlo.


                            
                                //Creo una función sencilla
                                function ejemplo1(){
                                    alert('Bienvenidos :D');
                                }

                                //Ubico al botón en mi DOM gracias a su id ÚNICO
                                let boton = document.getElementById('jsexp1');

                                //Le Adjunto un evento cuando el usuario haga click
                                boton.addEventListener('click', ejemplo1);

                                -
                            

                            

                            
                        

Conceptos Básicos y Sintaxis

JavaScript es una de las tecnologías web más emocionantes, y cuando comiences a ser bueno en su uso, tus sitios web entrarán en una nueva dimensión de energía y creatividad. Sin embargo, sentirse cómodo con JavaScript es un poco más difícil que sentirse cómodo con HTML y CSS. Deberás comenzar poco a poco y continuar trabajando en pasos pequeños y consistentes. Para comenzar, mostraremos cómo añadir JavaScript básico a tu página.


Puedes añadir el código a tu HTML de 3 formas, exactamente iguales a las de CSS.

1. En Línea (directamente en un elemento): Al igual que la capacidad de colocarlo directamente estilo sobre el elemento, es absolutamente desaconsejado, limitante y condena la escalabilidad de tu proyecto.

                            

                            
                        

2. Dentro de etiquetas <script>: Creas una etiqueta script con el atributo "type" con el valor "text/javascript" y dentro colocas el código a ejecutar, además necesitas conocer esta forma para poder aplicar la primera opción, pues es absolutamente ineficiente escribir una función entera dentro de un elemento HTML. Por tal motivo, si se desea emplear la opción número 1, lo correcto seria activar una función o evento especial que se encuentre definida en otra sección del código.

                            

                            
                        

3. Desde una Fuente externa (recomendado): Creas una etiqueta script pero esta vez con el atributo "src" dentro colocas la dirección de el archivo que deseas incrustar en tu página, la misma se aconseja que se encuentre justo antes del cierre de la etiqueta <body>, para tratar de garantizar que se hayan cargado todos los elementos con los cuales el script va a trabajar, no obstante el script puede ser insertado incluso en la etiqueta <head>, suponiendo que no cumple ninguna función de modificación en los elementos HTML presentes en la página. Esto, al igual que con CSS, te va a permitir controlar en instancias separadas los aspectos de tu sitio wew.

                            

                            
                        

Conceptos Básicos Esenciales

Una vez enlazado nuestro archivo JavaScript a nuestro proyecto, y antes de comenzar a escribir en dicho lenguaje, debemos conocer ciertos conceptos que utilizaremos a lo largo de nuestro aprendizaje de esta tecnología.

Variable: Las Variables son contenedores en los que puedes almacenar valores. Primero debes declarar la variable con la palabra clave "var" (menos recomendado) o "let", seguida del nombre que le quieras dar. Se recomienda más el uso de "let" que de "var":

                            
                                let nombreDeLaVariable;

                                // Tras declarar una variable, puedes asignarle un valor:
                                nombreDeLaVariable = "Bob";

                                // Puedes hacer las dos cosas en la misma línea si lo necesitas:
                                let nombreDeLaVariable = "Bob";

                                // Puedes obtener el valor de la variable llamándola por su nombre:
                                nombreDeLaVariable;

                                // Después de haberle dado un valor a la variable, puedes volver a cambiarlo:
                                let nombreDeLaVariable = "Bob";
                                nombreDeLaVariable = "Steve";
                            
                        

Tipos de Datos:  - String, Esto es una secuencia de texto conocida como cadena. Para indicar que la variable es una cadena, debes escribirlo entre comillas..  - Number, Esto es un número. Los números no tienen comillas.  - Boolean, Tienen valor verdadero/falso. true/false son palabras especiales en JS, y no necesitan comillas.  - Array, Una estructura que te permite almacenar varios valores en una sola referencia.  - Object, Básicamente cualquier cosa. Todo en JavaScript es un objeto y puede ser almacenado en una variable. Mantén esto en mente mientras aprendes

                            
                                // String
                                let miVariable = 'Bob';

                                // Number
                                let miVariable = 10;

                                // Boolean
                                let miVariable = true;

                                // Array
                                let miVariable = [1,'Bob','Steve',10];
                                //Llama a cada miembro del array así: miVariable[0], miVariable[1], etc.

                                // Object
                                let miVariable = document.querySelector('h1');
                                //Todos los ejemplos anteriores también.
                            
                        

Notas Importantes:  - Todas las líneas en JS deben acabar en punto y coma (;) para indicar que es ahí donde termina la declaración. Si no los incluyes puedes obtener resultados inesperados.  - Puedes llamar a una variable con casi cualquier nombre, pero hay algunas restricciones.   + Deben empezar con una letra, underscore (_) o signo de dolar ($).   + No pueden contener espacios.   + No pueden ser iguales a palabras reservadas como "if", "var" o "let".  - JavaScript distingue entre mayúsculas y minúsculas. miVariable es una variable distinta a mivariable.


Operadores: Un operador es básicamente un símbolo matemático que puede actuar sobre dos valores (o variables) y producir un resultado. A continuación expondremos los operadores más simples:  - Suma/concatena (+), Se usa para sumar dos números, o juntar dos cadenas en una.  - Resta, multiplicación, división (-, *, /),Estos hacen lo que esperarías que hicieran en las matemáticas básicas.  - Operador de asignación (=), Los has visto anteriormente: asigna un valor a una variable.  - Igualdad/Comparativo (==, ===), Comprueba si dos valores son iguales entre sí, y devuelve un valor de true/false (booleano).  - Negación, distinto (!, !=, !==), En ocasiones utilizado con el operador de identidad, la negación es en JS el equivalente al operador lógico NOT, es decir, cambia true por false y viceversa.


Condicionales: Las condicionales son estructuras de código que permiten comprobar si una expresión devuelve true o no, y después ejecuta un código diferente dependiendo del resultado. La forma de condicional más común es la llamada if... else. Entonces, por ejemplo:

                            
                                let helado = "chocolate";

                                if (helado === "chocolate") {
                                    alert("¡Sí, amo el helado de chocolate!");
                                } else {
                                    alert("Awwww, pero mi favorito es el de chocolate...");
                                }
                            
                        

La expresión dentro de if (... ) es el criterio, y este usa al operador de igualdad (descrito arriba) para comparar la variable helado con la cadena chocolate para ver si las dos son iguales. Si esta comparación devuelve true, el primer bloque de código se ejecuta. Si no, ese código se omite y se ejecuta el segundo bloque de código después de la declaración else.


Funciones: Las funciones son una manera de encapsular una funcionalidad que quieres reutilizar, de manera que puedes llamar esa función con un solo nombre, y no tendrás que escribir el código entero cada vez que la utilices. Ya has visto algunas funciones más arriba, por ejemplo:

                            
                                let nombreDeLaVariable = document.querySelector("h1");

                                alert("¡Hola!");
                            
                        

Estas funciones document.querySelector y alert están integradas en el navegador para poder utilizarlas en cualquier momento. Si ves algo que parece un nombre de variable, pero tiene paréntesis —()— al final, probablemente es una función. Las funciones con frecuencia toman argumentos, que son pedazos de datos que necesitan para hacer su trabajo. Estos se colocan dentro de los paréntesis, y se separan con comas si hay más de uno. Por ejemplo, la función alert() hace aparecer una ventana emergente dentro de la ventana del navegador, pero necesitas asignarle una cadena como argumento para decirle qué mensaje se debe escribir en la ventana emergente. Las buenas noticias son que podemos definir nuestras propias funciones. En el siguiente ejemplo escribimos una función simple que toma dos números como argumentos y los multiplica entre sí:

                            
                                function multiplica(num1, num2) {
                                    let resultado = num1 * num2;
                                    return resultado;
                                }
                            
                        

La sentencia return le dice al navegador que devuelva la variable resultado fuera de la función, para que esté disponible para su uso. Esto es necesario porque las variables definidas dentro de funciones, solo están disponibles dentro de esas funciones. Esto se conoce como «ámbito (scope en inglés) de la variable»:


Eventos: Para crear una interacción real en tu sitio web, debes usar eventos. Estos son unas estructuras de código que captan lo que sucede en el navegador, y permite que en respuesta a las acciones que suceden se ejecute un código. El ejemplo más obvio es un clic (click event), que se activa al hacer clic sobre algo. Hay muchas maneras de enlazar un evento a un elemento; aquí hemos seleccionado el elemento <html> y le asignamos a su propiedad onclick una función anónima (función sin nombre) que contiene el código que se ejecutará cuando el evento suceda.

                            
                                // Considera que ...
                                document.querySelector("html").onclick = function (){};

                                // ... es equivalente a ..
                                let miHTML = document.querySelector("html");
                                miHTML.onclick = function () {};

                                // Es solo un modo más corto de escribirlo.
                            
                        

Selectores: Los selectores son funciones nativas de JavaScript que permiten ubicar un objeto en el Documento HTML, para:  - Ser encapsulado en una variable.  - Leer o modificar sus atributos.  - Modificar al elemento en sí.  - Usarlo como punto de referencia para la búsqueda de otros elementos relativos al objetivo. Existen muchos selectores para poder exponerlos todos aquí, Pero debes conocer fundamentalmente que existen selectores de objetos (selector), y selectores de los atributos posibles del objeto (métodos). Por Ejemplo:

                            
                                // Esto es un selector que busca al elemento <input> en el documento
                                let input = document.querySelector("input");

                                // Este Método busca el valor del objeto input
                                let value = input.value;
                            
                        

Dentro de los selectores podemos destacar los siguientes: Selectores Viejos, que solo pueden ubicar a un único tipo de elemento, y pueden ser usados únicamente en la interfaz "document."  - getElementById(), Ubica elementos por su ID.  - getElementsByClassName(), Ubica varios elementos por su atributo "class", y por lo tanto devuelve un arreglo (array) de objetos  - getElementsByName(), Ubica varios elementos por su atributo "name", y por lo tanto devuelve un arreglo (array) de objetos  - getElementsByTagName(), Ubica varios elementos por su etiqueta, y por lo tanto devuelve un arreglo (array) de objetos. OJO: este selector tiene la particularidad de que la etiqueta a buscar deben escribirse en mayúscula. Selectores Nuevos, que ofrecen una mayor flexibilidad al momento de ubicar a un objetivo, pues usan selectores CSS para tal labor, por lo cual no están limitados a 1 solo tipo de elemento por búsqueda, y no están supeditados a la interfaz "document." sino que incluso pueden ser usado dentro de elementos ya seleccionados con el propósito de realizar una búsqueda incluso más específica.  - querySelector(), Devuelve el primer objeto encontrado que coincida con el selector empleado.  - querySelectorAll(), Devuelve un arreglo de objetos compuesto por todos los elementos HTML que cumplen con el criterio de búsqueda. Y esto ha sido todo de momento para el ámbito de normas, sintaxis y semántica de HTML de momento. Para ampliar la información por favor ingrese en el siguiente link:


Ejemplos Básicos

Dentro de los usos simples de JavaScript tenemos

1. Alertas: Con la función alert() puedes emitir avisos para el usuario.

                            
                                // Ubicamos el Botón con un selector
                                let boton = document.querySelector('button');

                                // Le adjuntamos una "Escucha de eventos" al hacer click
                                boton.addEvetListener('click', function()=>{
                                    alert('Bienvenidos :D');
                                });
                                -
                            

                            

                            
                        

2. Confirmaciones: Con la función confirm() puedes evitar que el usuario siga con el uso del navegador hasta tanto no tomen una decisión. Normalmente se pide como consentimientos por parte del usuario para realizar una determinada actividad.

                            
                                // Ubicamos el Botón con un selector
                                let boton = document.querySelector('#confirm');

                                // Le adjuntamos una "Escucha de eventos" al hacer click
                                boton.addEvetListener('click', function()=>{
                                    confirm('de veras? de veritas?');
                                });
                                -
                            

                            

                            
                        

3. Modificar Atributos: Con JavaScript puedes modificar los atributos que posee un elemento HTML, pudiendo cambiar su clase, valor, estilo etc. Es gracias a esto que, por ejemplo, existe la capacidad de crear el modo "oscuro" de los sitios web, pues se pueden crear 2 juegos de colores diferentes proyectados en las normas de CSS, y activar uno u otro al modificar con JavaScript las clases pertinentes.

                            
                                // Ubicamos el Botón con un selector
                                let boton = document.querySelector('#reverse');

                                // Seleccionamos al contenedor padre relativo al botón
                                let evenGrp = boton.parentNode;

                                // Le adjuntamos una "Escucha de eventos" al hacer click
                                boton.addEvetListener('click', function()=>{

                                    // Creamos una condicional resumida gracias al "operador ternario"
                                    // si el elemento tiene la clase "reverse", será removida y
                                    // sino, le será colocada
                                    evenGrp.classList.contains('reverse') ? evenGrp.classList.remove('reverse') : evenGrp.classList.add('reverse');
                                });
                                -
                            

                            

                            
                        

Convenciones

Entre las convenciones y buenas prácticas que existen podemos mencionar la siguientes

1. Indentación o Tabulación: Normalmente se puede trabajar con indentación y espacios en blanco en el código y no es importante para el intérprete puesto que no los toma en cuenta, pero para el programador, esto provee una mejor legibilidad del código..


2. Punto y Coma: Javascript utiliza ASI (Automatic Semicolon Insertion) cuando se trata de insertar un “punto y coma” que ha sido omitido en cada instrucción , y que es separada en una lí­nea diferente. Técnicamente es posible, sin embargo esta no es una buena práctica, porque en ciertas ocasiones se puede generar un error que será un quebradero de cabeza poder solucionarlo.


3. Utilizar === En lugar de ==: JavaScript utiliza dos tipos diferentes de operadores de igualdad: === | !== y == | != Se considera que la mejor práctica es utilizar siempre el primer conjunto al comparar. Sin embargo, al trabajar con == y !=, te encontrarás con problemas al trabajar con diferentes tipos. En estos casos, intentarán coaccionar los valores, sin éxito.


4. Coloca los scripts en la parte inferior de tu página: Si tienes archivos JS cuyo único propósito es añadir funcionalidad, por ejemplo, después de hacer clic en un botón, coloca esos archivos en la parte inferior, justo antes de la etiqueta de cierre del cuerpo. Se trata de una práctica absolutamente recomendable.


5. Comenta tu código: Puede parecer innecesario al principio, pero créeme, QUIERES comentar tu código lo mejor posible. ¿Qué pasa cuando vuelves al proyecto meses después, solo para descubrir que no puedes recordar fácilmente cuál era tu línea de pensamiento?.


«Un gran poder conlleva una gran responsabilidad»

JavaScript no es considerado la oveja negra de la triada web gratuitamente. Como podrás haber vislumbrado, su control sobre el documento es absoluto, dando lugar a la capacidad de hacer grandes cosas; tanto útiles, llamativas y sorprendentes, como terribles. Es por esto que una de las convenciones que dejamos para este cierre es que diseñes tu web con la menor dependencia de JavaScript, pues hoy en día es una practica habitual el bloquear dicha tecnología con herramientas externas, incorporadas al navegador. No obstante, para desarrollo de herramientas privadas con base en el entorno web, JavaScript puede y debe ser usado para brindar la mejor experiencia interactiva, al apegarse a las mejores prácticas y ser usado de una manera correctamente ética y moral. Recuerda que puedes ampliar tus conocimientos en JavaScript en los enlaces que dejaremos a continuación, los cuales sirvieron como base de la creación de la presente guía.


Veamos entonces, cuales son los fundamentos básicos del desarrollo web: