Rod AlexandersonResponde lo antes posible
Rod Alexanderson

隆Hola!馃憢馃徏 Escribe tu nombre y tu programa de inter茅s para poder atenderte mejor

22:37

驴Cu谩l es la diferencia entre VAR, LET y CONST?

Antes de definir que es VAR, LET y CONST. Quiero explicarte qu茅 es una variable y para qu茅 se usan

Las variables son elementos fundamentales en la programaci贸n que se utilizan para almacenar y manipular datos. Puedes pensar en las variables como contenedores que guardan informaci贸n que puede ser utilizada y modificada a lo largo del programa.

驴Para qu茅 se usan?

  • Almacenar datos que el programa necesita para funcionar.
  • Manipular y procesar informaci贸n.
  • Facilitar la legibilidad y mantenibilidad del c贸digo.

隆Dejando esto claro, ahora s铆 vamos con Var, Let, y Const!

Variable VAR

Alcance:

'var' tiene un alcance global o de funci贸n, lo que significa que si se declara dentro de una funci贸n, no puede ser accedida fuera de esa funci贸n. Sin embargo, si se declara fuera de una funci贸n, es accesible en cualquier parte del c贸digo.


    function alcanceVar() {
    var mensaje = "Dentro de la funci贸n";
    if (true) {
        var mensaje = "Dentro del bloque if"; // redeclara y reasigna la misma variable
        console.log(mensaje); // "Dentro del bloque if"
    }
    console.log(mensaje); // "Dentro del bloque if" - la misma variable que en el if
}

alcanceVar();
console.log(mensaje); // Error: mensaje is not defined

Explicaci贸n

  • Dentro de la funci贸n alcanceVar, var mensaje se declara y se asigna el valor "Dentro de la funci贸n".
  • Dentro del bloque if, la variable mensaje se redeclara y reasigna a "Dentro del bloque if". Como var tiene alcance de funci贸n, esta declaraci贸n afecta a la misma variable mensaje.
  • Fuera del if pero dentro de la funci贸n, la variable mensaje muestra "Dentro del bloque if", ya que fue reasignada dentro del if.
  • Fuera de la funci贸n, intentar acceder a mensaje produce un error porque mensaje tiene alcance de funci贸n y no es accesible fuera de alcanceVar.

Hoisting:

Las declaraciones de var son "elevadas" al inicio del contexto de ejecuci贸n, lo que significa que puedes usar la variable antes de declararla (aunque su valor ser谩 undefined hasta que se asigne expl铆citamente).


function hoistingVar() {
    console.log(mensaje); // undefined (debido al hoisting)
    var mensaje = "Hola, Mundo!";
    console.log(mensaje); // "Hola, Mundo!"
}

hoistingVar();

Explicaci贸n

  • En el contexto de la funci贸n hoistingVar, la declaraci贸n var mensaje es elevada al inicio.
  • Antes de la inicializaci贸n de mensaje, su valor es undefined.
  • Despu茅s de la inicializaci贸n, mensaje tiene el valor "Hola, Mundo!".

Reasignaci贸n y Redeclaraci贸n

Puedes reasignar y redeclarar una variable declarada con var en el mismo 谩mbito sin errores.


function reasignacionRedeclaracionVar() {
    var mensaje = "Primera declaraci贸n";
    console.log(mensaje); // "Primera declaraci贸n"
    
    mensaje = "Reasignaci贸n"; // reasignaci贸n permitida
    console.log(mensaje); // "Reasignaci贸n"
    
    var mensaje = "Redeclaraci贸n"; // redeclaraci贸n permitida
    console.log(mensaje); // "Redeclaraci贸n"
}

reasignacionRedeclaracionVar();

Explicaci贸n

  • Se declara la variable mensaje con el valor "Primera declaraci贸n".
  • La variable mensaje se reasigna con el valor "Reasignaci贸n".
  • La variable mensaje se redeclara y se asigna el valor "Redeclaraci贸n".
  • Cada operaci贸n es permitida sin errores debido a las caracter铆sticas de var.

Ejemplo real VAR


function calcularInteresSimple() {
    var principal = 1000; // cantidad principal
    var tasaInteres = 0.05; // tasa de inter茅s anual
    var tiempo = 2; // tiempo en a帽os
    
    var interes = principal * tasaInteres * tiempo;
    console.log("Inter茅s simple: " + interes); // "Inter茅s simple: 100"
}

calcularInteresSimple();

Nota Final

En la pr谩ctica, es mejor usar let o const para evitar problemas relacionados con el alcance y la redeclaraci贸n de variables. A煤n as铆, no descartes que podr铆as llegar a utilizar VAR en alg煤n proyecto que as铆 te lo requiera.

ECMAScript 2015 (ES6) Y la introcucci贸n a las variables LET y CONST

Las variables let y const se introdujeron en la especificaci贸n ECMAScript 6 (ES6), tambi茅n conocida como ECMAScript 2015. La especificaci贸n fue finalizada en junio de 2015.

La introducci贸n de let y const en ES6 ten铆a como objetivo solucionar varios problemas y limitaciones asociadas con el uso de var en JavaScript, mejorando as铆 la legibilidad, mantenimiento y seguridad del c贸digo.

Variable LET

Alcance:

'var' tiene un alcance global o de funci贸n, lo que significa que si se declara dentro de una funci贸n, no puede ser accedida fuera de esa funci贸n. Sin embargo, si se declara fuera de una funci贸n, es accesible en cualquier parte del c贸digo.


function ejemploAlcance() {
  let mensaje = "Fuera del bloque if";
  if (true) {
    let mensaje = "Dentro del bloque if"; // nueva variable con el mismo nombre dentro del bloque
    console.log(mensaje); // "Dentro del bloque if"
  }
  console.log(mensaje); // "Fuera del bloque if"
}

ejemploAlcance();

Explicaci贸n

  • Dentro de la funci贸n ejemploAlcance, se declara let mensaje con el valor "Fuera del bloque if"
  • Dentro del bloque if, se declara otra let mensaje con el valor "Dentro del bloque if". Esta variable es diferente a la de fuera del bloque if porque let tiene alcance de bloque
  • Cuando se imprime mensaje dentro del bloque if, el valor es "Dentro del bloque if"
  • Cuando se imprime mensaje fuera del bloque if pero dentro de la funci贸n, el valor sigue siendo "Fuera del bloque if" porque las dos variables mensaje son distintas

Hoisting:

Las declaraciones de var son "elevadas" al inicio del contexto de ejecuci贸n, lo que significa que puedes usar la variable antes de declararla (aunque su valor ser谩 undefined hasta que se asigne expl铆citamente).


function ejemploHoisting() {
  console.log(mensaje); // Error: Cannot access 'mensaje' before initialization
  let mensaje = "Hola, Mundo!";
  console.log(mensaje); // "Hola, Mundo!"
}

ejemploHoisting();

Explicaci贸n

  • En el contexto de la funci贸n ejemploHoisting, la declaraci贸n let mensaje no es accesible antes de su inicializaci贸n, lo que causa un error
  • A diferencia de var, las variables declaradas con let no se pueden usar antes de su declaraci贸n debido al hoisting temporal
  • El primer console.log lanza un error porque mensaje no est谩 inicializada
  • El segundo console.log imprime "Hola, Mundo!" porque la variable mensaje ha sido inicializada

Reasignaci贸n y Redeclaraci贸n

Puedes reasignar y redeclarar una variable declarada con var en el mismo 谩mbito sin errores.


function ejemploReasignacionRedeclaracion() {
  let mensaje = "Primera declaraci贸n";
  console.log(mensaje); // "Primera declaraci贸n"
  
  mensaje = "Reasignaci贸n"; // reasignaci贸n permitida
  console.log(mensaje); // "Reasignaci贸n"
  
  let mensaje = "Redeclaraci贸n"; // Error: Identifier 'mensaje' has already been declared
  console.log(mensaje); // Este c贸digo no se ejecuta
}

ejemploReasignacionRedeclaracion();

Explicaci贸n

  • Se declara la variable mensaje con el valor "Primera declaraci贸n"
  • La variable mensaje se reasigna con el valor "Reasignaci贸n", lo cual es permitido con let
  • Intentar redeclarar mensaje dentro del mismo 谩mbito con let causa un error: "Identifier 'mensaje' has already been declared
  • La reasignaci贸n es permitida, pero la redeclaraci贸n dentro del mismo 谩mbito no lo es con let

function actualizarInventario() {
  let inventario = 100; // Inventario inicial
  console.log(`Inventario inicial: ${inventario}`);

  // Simulaci贸n de ventas
  for (let i = 0; i < 5; i++) {
    let venta = Math.floor(Math.random() * 10) + 1; // Ventas aleatorias entre 1 y 10
    inventario -= venta; // Actualizamos el inventario
    console.log(`Venta: ${venta} unidades, Inventario restante: ${inventario}`);
  }
}

actualizarInventario();

Nota Final

Let proporciona una forma m谩s segura y controlada de manejar variables que cambian de valor dentro de un 谩mbito espec铆fico, evitando problemas comunes asociados con var como el hoisting no esperado y el alcance global de funci贸n.

Variable CONST

Alcance:

'const' tambi茅n tiene un alcance de bloque, similar a let.


function ejemploAlcance() {
  const mensaje = "Fuera del bloque if";
  if (true) {
    const mensaje = "Dentro del bloque if"; // nueva variable con el mismo nombre dentro del bloque
    console.log(mensaje); // "Dentro del bloque if"
  }
  console.log(mensaje); // "Fuera del bloque if"
}

ejemploAlcance();
    
  • Se declara la variable mensaje con el valor "Primera declaraci贸n"
  • La variable mensaje se reasigna con el valor "Reasignaci贸n", lo cual es permitido con let
  • Intentar redeclarar mensaje dentro del mismo 谩mbito con let causa un error: "Identifier 'mensaje' has already been declared
  • La reasignaci贸n es permitida, pero la redeclaraci贸n dentro del mismo 谩mbito no lo es con let

Hoisting:

Al igual que let, las declaraciones de const son elevadas pero no inicializadas, resultando en un error si se accede a ellas antes de la declaraci贸n.


function ejemploHoisting() {
  console.log(mensaje); // Error: Cannot access 'mensaje' before initialization
  const mensaje = "Hola, Mundo!";
  console.log(mensaje); // "Hola, Mundo!"
}

ejemploHoisting();
  • Se declara la variable mensaje con el valor "Primera declaraci贸n"
  • La variable mensaje se reasigna con el valor "Reasignaci贸n", lo cual es permitido con let
  • Intentar redeclarar mensaje dentro del mismo 谩mbito con let causa un error: "Identifier 'mensaje' has already been declared
  • La reasignaci贸n es permitida, pero la redeclaraci贸n dentro del mismo 谩mbito no lo es con let

Reasignaci贸n y Redeclaraci贸n

No puedes reasignar ni redeclarar una variable declarada con const. Debe ser inicializada en el momento de su declaraci贸n y su valor no puede cambiar. Sin embargo, si el valor es un objeto o un array, puedes modificar sus propiedades o elementos.


function ejemploReasignacionRedeclaracion() {
  const mensaje = "Primera declaraci贸n";
  console.log(mensaje); // "Primera declaraci贸n"
  
  mensaje = "Reasignaci贸n"; // Error: Assignment to constant variable
  console.log(mensaje); // Este c贸digo no se ejecuta
  
  const mensaje = "Redeclaraci贸n"; // Error: Identifier 'mensaje' has already been declared
  console.log(mensaje); // Este c贸digo no se ejecuta
}

ejemploReasignacionRedeclaracion();
    
  • Se declara la variable mensaje con el valor "Primera declaraci贸n"
  • La variable mensaje se reasigna con el valor "Reasignaci贸n", lo cual es permitido con let
  • Intentar redeclarar mensaje dentro del mismo 谩mbito con let causa un error: "Identifier 'mensaje' has already been declared
  • La reasignaci贸n es permitida, pero la redeclaraci贸n dentro del mismo 谩mbito no lo es con let

function gestionarInventario() {
  const capacidadMaxima = 500; // Capacidad m谩xima del almac茅n
  let inventario = 300; // Inventario inicial

  console.log(`Capacidad m谩xima: ${capacidadMaxima}`);
  console.log(`Inventario inicial: ${inventario}`);

  // Intentar cambiar la capacidad m谩xima causar谩 un error
  // capacidadMaxima = 600; // Error: Assignment to constant variable

  // Simulaci贸n de entradas de inventario
  let entrada = 50; // Nuevas unidades ingresadas
  inventario += entrada;
  console.log(`Inventario despu茅s de entrada: ${inventario}`);
}

gestionarInventario();

    

Nota Final

Const proporciona una forma clara y segura de declarar variables que deben mantenerse constantes, mejorando la legibilidad y robustez del c贸digo.