Introducción
Independientemente de qué tanto sepamos Javascript, en algún momento alguien nos dijo o descubrimos que en Javascript podemos hacer dos cosas un poco raras:
- Declarar variables sin la palabra reservada var
- No poner punto y coma al final de cada sentencia
Cada una de estas cosas tiene su explicación. Y deberíamos omitir siempre ambas.
Declarar variables sin var
Comenzamos con declarar variables sin var. Pues bien, recordemos que para declarar una variable normal usamos lo siguiente:
var edad = 10; var nombre = "John";
Pero claro que podemos hacer esto:
edad = 10; nombre = "John";
¿Qué está pasando ahí?
Cuando no usamos var, la variable pasa a ser global automáticamente. Hacer esto:
function hola(){ saludo = "Mundo"; }
Es equivalente a hacer esto:
var saludo = "Hola"; //Es global function hola(){ }
Puede que no parezca nada malo; pero cuando estamos en proyectos grandes, una variable global puede traernos graves problemas, porque puede que tengamos resultados inesperados leyendo una variable que creemos local cuando en realidad no lo es. O podemos asignarla y otro programador obtendrá valores equivocados.
Para solucionar esto y educarnos a nosotros mismos (y a nuestros compañeros) podemos usar el modo estricto poniendo “use strict”; al inicio de nuestros scripts.
"use strict"; function hola(){ saludo = "Mundo"; // Error }
Así que asignar variables sin var no es un tipo de magia, sino más bien una muy mala práctica que debemos omitir al menos que sepamos lo que estamos haciendo.
No usar punto y coma ;
Por otro lado tenemos a aquellos que dicen que no es necesario el ; al terminar una sentencia. Esto tampoco es magia. Cuando no ponemos punto y coma, el intérprete separa las sentencias con saltos de línea.
Con punto y coma, yo puedo hacer esto:
var edad = 19; console.log("Tu edad es ", edad);
Sin punto y coma…
var edad = 19 console.log("Tu edad es ", edad)
Oh, sorpresa. ¿No decían que se puede hacer sin ;?
Veamos ahora otra cosa que me encontré un día en codewars. Esta función:
function obtenerMascota(){ return { nombre: "Maggie" } }
Lo que esperamos al llamar esta función es un objeto que tiene la propiedad nombre. Vamos a probar…
Podemos ver que al llamar a obtenerMascota nos da undefined. La razón de esto es que estamos separando por un salto de línea el return y la llave de inicio del objeto.
La función correcta debería quedar así:
En este caso ponemos la llave junto con return. Ya que anteriormente el intérprete tomaba a return como una sentencia aparte del objeto.
Por eso es importante terminar nuestras sentencias con punto y coma, y poner la llave de inicio en la misma línea cuando estamos regresando un objeto.
Conclusión
Con esto terminamos por hoy. Tal vez al inicio nos moleste un poco usar el modo estricto pero es una forma de mejorar. Dejo algunas referencias:
https://www.w3schools.com/js/js_variables.asp
https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Sentencias/var
Pingback: Const, var y let en JavaScript: diferencias y explicación - Parzibyte's blog