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