2. ¡Aprendiendo haciendo!
Interacción con la consola
Una de las grandes ventajas de node.js es que tiene un modo interactivo o « línea de comando » muy poderoso que nos permite explorar el lenguaje sin tener que usar un editor de texto.
Para iniciarlo, solo hay que ejecutar el comando: node.
Ya cuando se observa el «prompt» > se puede empezar a ejecutar comandos:
Como se puede ver, operaciones matemáticas se pueden especificar directamente en el comando de línea y se imprime el resultado al oprimir «Enter». Al invocar un método de un objeto como console.log() que es lo comúnmente se usa para imprimir información en la consola, después de ejecutar el comando, se imprime el mensaje «undefined». Esto es porque todas las funciones deben regresar algo, aunque sea el valor «undefined» y la consola de node.js siempre imprime el resultado de operaciones y lo que retornan las funciones y métodos. Al usar la consola de node.js se ignora ese mensaje.
Al igual que otros lenguajes de programación, en JavasScript se puede acceder a miembros de objetos como atributos y métodos por medio de la notación por punto. En el caso de console.log(), el objeto es “console” y el método es “log()”. Esta notación se estará utilizado de forma extensiva en este curso ya que muchas de las funcionalidades que se van a invocar en los ejemplos de código van a ser métodos de objetos, aunque algunos van a ser también funciones tradicionales.
Mas detalles de la notación por puntos acá: https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Operators/Property_accessors
Según el ejemplo anterior donde se imprimió el resultado de una multiplicación, nótese el formato que se utiliza para imprimir un poco de texto y el resultado de la operación matemática. Se usa el símbolo de dólar ($) seguido inmediatamente por un corchete izquierdo ( { ), todo lo que siga hasta el cierre con un corchete derecho ( } ) se considera algo a evaluar para obtener el resultado a imprimir. En este caso, es una simple operación matemática, pero podría también ser una variable declarada anteriormente.
Es importante notar que luego de especificar el comando de console.log y el paréntesis izquierdo, lo que sigue este rodeado de un acento grave a cada lado ( ` ) que se puede teclear en Windows sosteniendo la tecla Alt mientras se digita 96 en el teclado numérico.
Ese método de «empotrar» operaciones o variables en una sola cadena de texto en el comando console.log() se llama «Template literals» y se pueden encontrar más detalles y otros usos acá:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals
Para más detalles de otras formas de usar console.log() puedes ver este documento: https://nodejs.dev/learn/output-to-the-command-line-using-nodejs
Para el desarrollo de este curso se prefiere el uso de «Template literals» porque resulta más natural y sencillo para cosas como indicar el valor de una variable mientras ejecuta el código , pero cualquiera de los métodos indicados en la documentación oficial de console.log() son válidos.
Para salir de la consola de node.js solo tenemos que dar el comando .exit:
Es un error frecuente que se omita ese comando y se aplique lo que más comúnmente se utiliza para «salirse» de muchas líneas de comando: CTRL+C. Al ser tan común ese método, node.js lo reconoce y pide que se confirme presionando CTRL+C, CTROL+D o .exit si realmente se desea salir de esa forma:
Entonces se puede utilizar cualquiera de los métodos como indican las instrucciones, pero con el tiempo y la práctica verá que .exit es una forma más apropiada de salirse. Ya que el comando de línea no es más que una implementación de un REPL (Read-Eval-Print-Loop) que ofrece la conveniencia de poder ejecutar comandos y evaluar expresiones de node.js y JavaScript en general en tiempo real. Más detalles acá: node.js repl
Aspectos fundamentales del lenguaje JavaScript
La meta de esta sección es lograr que lectores que nunca han usado JavaScript puedan rápidamente aprender los elementos básicos para al menos poder entender bien y modificar un poco los ejemplos. Si desean una guía mas completa pueden referirse al que ofrece la fundación Mozilla:
https://developer.mozilla.org/es/docs/Web/JavaScript/Guide
Si el lector tiene experiencia utilizando un lenguaje de programación en el pasado, notará que la sintaxis de JavaScript esta influenciada por lenguajes como Java, C y C++ pero también incorpora elementos de otros lenguajes como el manejo de cadenas de caracteres, arrays y expresiones regulares de Python, funciones de Awk y elementos no sintácticos como su integración en navegadores Web muy similar a HyperTalk.
JavaScript distingue entre letras minúsculas y mayúsculas y utiliza el conjunto de caracteres Unicode lo cual nos permite declarar variables y nombres de funciones usando una gran variedad de idiomas y no solo lo que usan caracteres ASCII como en lenguajes más antiguos. Pero cuidado con el uso muy extenso de cualquier carácter Unicode para estos nombres pues no todas las herramientas de programación las manejan bien, aunque el lenguaje este definido para soportarlos. La meta de los nombres de variables, funciones y demás es que un ser humano al leerlo pueda fácilmente entender su propósito.
Las instrucciones en JavaScript son denominadas declaraciones y están separados por punto y coma ( ; ). El punto y coma al final de cada línea es realmente opcional, pero es una buena práctica incluirlo pues el punto y coma denota el final de una declaración y podría haber varias dentro de una misma línea. Si no hay punto y coma al final de una línea, el interpretador lo agrega automáticamente y sin mostrarlo.
Comentarios
¿Qué sería de los programadores sin la posibilidad de agregar comentarios al código?
Afortunadamente, casi todos los lenguajes de programación tienen mecanismos para agregar comentarios. Básicamente son bloques de texto que son ignorados por compiladores e interpretadores del código.
En JavaScript, los comentarios tienen la misma sintaxis que el lenguaje C++ y muchos otros lenguajes de programación: se usan dos barras inclinadas (//) para indicar que una línea es un comentario además de barra inclinada y asterisco (/*) para abrir y asterisco más barra inclinada (*/) para indicar el comienzo y fin de un bloque de comentarios que comprendan múltiples líneas de texto.
Por ejemplo:
Es una muy buena práctica el hacer uso extenso de comentarios en el código para el beneficio de otras personas que tengan que mantener o simplemente entender el código para replicarlo o mejorarlo. Otra ventaja al documentar lo que el código esta haciendo con comentarios suele ayudar a cuestionar la eficacia de lo que se escribe y motiva a revisar de nuevo el código para asegurarse que no tenga errores.
También es una práctica común el temporalmente eliminar un bloque de código del programa al rodearlo con indicadores de bloque de comentario sin tener que borrarlo para fácilmente volverlo a habilitar. Pero eso no debe hacerse cuando el código ya se esté usando en producción sino durante la etapa de desarrollo y pruebas iniciales. Si hace falta condicionar la ejecución de un bloque de código en la versión final, se deben usar mecanismos de control de flujo que veremos más adelante.
Bloques
En JavaScript, un bloque de código comprende todo lo que está rodeado por un par de llaves. Típicamente se tienen varias sentencias que terminan en punto y coma. Por ejemplo:
Son muy utilizados para agrupar comandos que se van a ejecutar en el contexto de una decisión de flujo como if, for o while. El uso correcto de bloques y los márgenes adicionales ayuda mucho a que el código sea más claro y fácil de corregir en caso de problemas.
Los bloques de código pueden ser tan largos como sea necesario, pero para que no pierdan su intención de orden, se debe mantener corto. Se recomienda de 15 a 25 líneas para que sea más fácil entender el alcance de un bloque. En cuanto a las líneas dentro de un bloque, siempre es buena idea mantenerlos a menos de 80 caracteres de longitud para poder ver la sentencia o línea en la pantalla toda a la vez. Hay varias formas de dividir líneas de código en JavaScript de forma segura.
Por ejemplo, si la línea de código contiene mucho texto, este se puede definir usando plantillas literales rodeando el texto con el caracter de comillas o tildes invertidas ( ` ) en vez de las comillas sencillas o dobles así:
Más detalles acerca de las planillas literales acá: https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Template_literals
En cuanto a líneas de código con muchos parámetros o expresiones, se pueden dividir en múltiples líneas de forma segura. Por ejemplo:
Expresiones y Operadores
En JavaScript hay varios tipos de operadores algunos son:
Mas detalles acerca de operadores acá: https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Operators