Sobes.tech
Junior

Kā var deklarēt mainīgos JavaScript? Norādiet šo metožu atšķirības.

sobes.tech AI

Atbilde no AI

JavaScript var, let un const variablas var deklarēt iespējams ar trim dažādiem veidiem.

To atšķirības:

Atšķirība var let const
Redzes lauks Funkcionāls Bloka līmenis Bloka līmenis
Pārrakstīšana Iespējama Iespējama Nav iespējama
Hoisting Paceļ deklarāciju un inicializāciju uz undefined Paceļ deklarāciju, bet ne inicializāciju Paceļ deklarāciju, bet ne inicializāciju

Piemēri:

// var
function exampleVar() {
  var x = 10; // Funkcionāls līmenis
  if (true) {
    var x = 20; // Pārrakstīšana ir iespējama tajā pašā funkcijā
    console.log(x); // 20
  }
  console.log(x); // 20 (mainīgais x no if ir pieejams šeit)
}

console.log(x); // Kļūda: ReferenceError: x nav definēts (x nav redzams ārpus funkcijas)

// Hoisting var
console.log(a); // undefined
var a = 5;
console.log(a); // 5
// let
function exampleLet() {
  let y = 10; // Bloka līmenis
  if (true) {
    let y = 20; // Nav iespējama pārrakstīšana tajā pašā blokā
    console.log(y); // 20 (cits y mainīgais)
  }
  console.log(y); // 10 (mainīgais y ārpus bloka)
}

console.log(y); // Kļūda: ReferenceError: y nav definēts

// Hoisting let
// console.log(b); // Kļūda: ReferenceError: Nav iespējams piekļūt 'b' pirms inicializācijas
let b = 5;
console.log(b); // 5
// const
function exampleConst() {
  const z = 10; // Bloka līmenis
  // z = 20; // Kļūda: TypeError: Piešķiršana konstantes mainīgajam. (Nav iespējama)
  if (true) {
    const z = 20; // Nav iespējama pārrakstīšana tajā pašā blokā
    console.log(z); // 20 (cits z mainīgais)
  }
  console.log(z); // 10 (mainīgais z ārpus bloka)
}

console.log(z); // Kļūda: ReferenceError: z nav definēts

// Hoisting const
// console.log(c); // Kļūda: ReferenceError: Nav iespējams piekļūt 'c' pirms inicializācijas
const c = 5;
console.log(c); // 5

// Objektu un masīvu deklarācijām ar const, ir iespējams mainīt to saturu
const obj = { nosaukums: 'Tests' };
obj.nosaukums = 'Jauns Tests'; // Atļauts
// obj = { nosaukums: 'Cits Tests' }; // Kļūda