Junior
¿De qué maneras se pueden declarar variables en JavaScript? Nombra las diferencias entre estos métodos.
sobes.tech AI
Respuesta de la IA
En JavaScript, las variables se pueden declarar de tres maneras: var, let, const.
Diferencias entre ellas:
| Diferencia | var |
let |
const |
|---|---|---|---|
| Ámbito de alcance | Funcional | Bloque | Bloque |
| Re-declaración | Posible | Posible | No posible |
| Reasignación | Posible | Posible | No posible |
| Hoisting | Eleva la declaración y la inicialización a undefined |
Eleva la declaración, pero no la inicialización | Eleva la declaración, pero no la inicialización |
Ejemplos:
// var
function ejemploVar() {
var x = 10; // Ámbito funcional
if (true) {
var x = 20; // Re-declaración posible dentro de la misma función
console.log(x); // 20
}
console.log(x); // 20 (la variable x del if está accesible aquí)
}
console.log(x); // Error: ReferenceError: x no está definido (x no es visible fuera de la función)
// Hoisting con var
console.log(a); // undefined
var a = 5;
console.log(a); // 5
// let
function ejemploLet() {
let y = 10; // Ámbito de bloque
if (true) {
let y = 20; // Re-declaración no posible dentro del mismo bloque
console.log(y); // 20 (es otra variable y)
}
console.log(y); // 10 (la variable y fuera del bloque)
}
console.log(y); // Error: ReferenceError: y no está definido
// Hoisting con let
// console.log(b); // Error: ReferenceError: No se puede acceder a 'b' antes de la inicialización
let b = 5;
console.log(b); // 5
// const
function ejemploConst() {
const z = 10; // Ámbito de bloque
// z = 20; // Error: TypeError: Asignación a variable constante. (No se puede reasignar)
if (true) {
const z = 20; // Re-declaración no posible dentro del mismo bloque
console.log(z); // 20 (otra variable z)
}
console.log(z); // 10 (la variable z fuera del bloque)
}
console.log(z); // Error: ReferenceError: z no está definido
// Hoisting con const
// console.log(c); // Error: ReferenceError: No se puede acceder a 'c' antes de la inicialización
const c = 5;
console.log(c); // 5
// Para objetos y arreglos declarados con const, se puede modificar su contenido
const obj = { name: 'Test' };
obj.name = 'New Test'; // Permitido
// obj = { name: 'Otro Test' }; // Error