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