¿Alguien podría explicarme la diferencia entre declarar dos veces la misma variable y declarar una variable dentro de un bucle?
Las variables locales y constantes tienen que tener nombres univocos y al intentar declarar 2 veces la misma variable, JavaScript te levanta una excepciòn (el error que te da), visto que esta regla no esta siendo cumplida.
como podes ver :
for(i = 0; i < 5; i++) {
if (i != 0)
console.log(a + " antes de declarar")
let a = i;
console.log(a + " despues de declarar")
}
En el caso de declarar una variable local al interno de un bucle, esa misma variable existe desde su declaración hasta que se ejecute el ultimo fragmento de codigo al interno del loop. Osea la variable existe solo durante la primera iteraciòn.
Esto no ocurre cuando se utiliza var
, la cual te permite declarar mas veces la misma variable y tratandose de una variable global, esta no deja de existir por mas que se termine la iteración, es decir que con esta declaración JS sobre escribe la variable :
for (i=0;i < 5; i++) {
if (i != 0)
console.log(a + " sigo existiendo");
var a = i;
console.log(a);
}
var a = 1;
console.log(a + " primera declaraciòn externa");
var a = 3;
console.log(a + " segunda declaraciòn externa");
explicaciòn final :
const
sirve para declarar una variable constante, esto significa que en todo tu proyecto no podes volver a utilizar ese nombre como variable y la misma no puede cambiar valor.
ejemplo :
const CONSTANTE = "soy una variable constante";
try {
CONSTANTE = "cambio el valor"
}catch {
console.log("la variable no puede cambiar su valor !")
}
console.log(CONSTANTE);
const CONSTANTE = "nadie se puede llamar como yo";
var CONSTANTE = "probamos";
let
sirve para declarar variables locales, si la declaras por ejemplo en una función, quiere decir que en esa función no puede haber otra variable con ese nombre. y esta variable va a existir unicamente al interno de la misma función.
ejemplo :
function a() {
let hola = "hola desde a";
console.log(hola);
}
function b() {
let hola = "hola desde b";
console.log(hola);
}
function c() {
let hola = "hola desde c";
console.log(hola);
}
function d() {
let hola = "hola desde d";
console.log(hola)
}
a();
b();
c();
d();
try {
console.log(hola);
}catch {
console.log("no existe la variable 'hola'");
}
espero que te sea un poco mas claro el asunto !
exitos.