Sobes.tech
Junior

Kuidas saab JavaScriptis deklareerida muutujad? Nimetage nende meetodite erinevused.

sobes.tech AI

Vastus AI-lt

JavaScriptis saab muutujad deklareerida kolme erineva meetodiga: var, let, const.

Nende erinevused:

Erinevus var let const
Nähtavusala Funktsionaalne Bloki sees Bloki sees
Ülekirjutamine Võimalik Võimalik Ei ole võimalik
Hoisting Tõstab deklaratsiooni ja initsialiseerib undefined-iks Tõstab deklaratsiooni, kuid mitte initsialiseerimist Tõstab deklaratsiooni, kuid mitte initsialiseerimist

Näited:

// var
function exampleVar() {
  var x = 10; // Funktsionaalne ulatus
  if (true) {
    var x = 20; // Võimalik on üle kirjutada sama funktsiooni sees
    console.log(x); // 20
  }
  console.log(x); // 20 (muutuja x if-st on saadaval siin)
}

console.log(x); // Viga: ReferenceError: x ei ole defineeritud (x ei ole nähtav väljaspool funktsiooni)

// Hoisting var
console.log(a); // undefined
var a = 5;
console.log(a); // 5
// let
function exampleLet() {
  let y = 10; // Bloki ulatus
  if (true) {
    let y = 20; // Ei ole võimalik üle kirjutada sama blokis
    console.log(y); // 20 (teine y muutujast)
  }
  console.log(y); // 10 (muutuja y väljaspool bloki)
}

console.log(y); // Viga: ReferenceError: y ei ole defineeritud

// Hoisting let
// console.log(b); // Viga: ReferenceError: Ei saa ligi 'b'-le enne initsialiseerimist
let b = 5;
console.log(b); // 5
// const
function exampleConst() {
  const z = 10; // Bloki ulatus
  // z = 20; // Viga: TypeError: Konstantse muutujale määramine. (Ei ole võimalik üle kirjutada)
  if (true) {
    const z = 20; // Ei ole võimalik üle kirjutada sama bloki sees
    console.log(z); // 20 (teine z muutujast)
  }
  console.log(z); // 10 (muutuja z väljaspool bloki)
}

console.log(z); // Viga: ReferenceError: z ei ole defineeritud

// Hoisting const
// console.log(c); // Viga: ReferenceError: Ei saa ligi 'c'-le enne initsialiseerimist
const c = 5;
console.log(c); // 5

// Objektidele ja massiividele, mis on deklareeritud const-iga, saab muuta nende sisu
const obj = { nimi: 'Test' };
obj.nimi = 'Uus Test'; // Võimalik
// obj = { nimi: 'Teine Test' }; // Viga