Junior
Na koje načine možete deklarisati promenljive u JavaScript-u? Navedite razlike između ovih metoda.
sobes.tech АИ
Одговор од АИ
У JavaScript-u možete deklarisati promenljive na tri načina: var, let, const.
Razlike između njih:
| Razlika | var |
let |
const |
|---|---|---|---|
| Opseg vidljivosti | Funkcionalni | Blokovski | Blokovski |
| Prepisivanje | Moguće | Moguće | Nije moguće |
| Hoisting | Podiže deklaraciju i inicijalizaciju na undefined |
Podiže deklaraciju, ali ne i inicijalizaciju | Podiže deklaraciju, ali ne i inicijalizaciju |
Primeri:
// var
function exampleVar() {
var x = 10; // Funkcionalni opseg
if (true) {
var x = 20; // Moguće je prepisivanje unutar iste funkcije
console.log(x); // 20
}
console.log(x); // 20 (promenljiva x iz if je dostupna ovde)
}
console.log(x); // Greška: ReferenceError: x nije definisana (x nije vidljiva izvan funkcije)
// Hoisting var
console.log(a); // undefined
var a = 5;
console.log(a); // 5
// let
function exampleLet() {
let y = 10; // Blokovski opseg
if (true) {
let y = 20; // Moguće je prepisivanje unutar istog bloka
console.log(y); // 20 (druga promenljiva y)
}
console.log(y); // 10 (promenljiva y izvan bloka)
}
console.log(y); // Greška: ReferenceError: y nije definisana
// Hoisting let
// console.log(b); // Greška: ReferenceError: Ne može pristupiti 'b' pre inicijalizacije
let b = 5;
console.log(b); // 5
// const
function exampleConst() {
const z = 10; // Blokovski opseg
// z = 20; // Greška: TypeError: Dodeljivanje konstantnoj promenljivoj. (Prepisivanje nije moguće)
if (true) {
const z = 20; // Moguće je prepisivanje unutar istog bloka
console.log(z); // 20 (druga promenljiva z)
}
console.log(z); // 10 (promenljiva z izvan bloka)
}
console.log(z); // Greška: ReferenceError: z nije definisana
// Hoisting const
// console.log(c); // Greška: ReferenceError: Ne može pristupiti 'c' pre inicijalizacije
const c = 5;
console.log(c); // 5
// Za objekte i nizove deklarisane putem const, sadržaj se može menjati
const obj = { ime: 'Test' };
obj.ime = 'Novi Test'; // Dozvoljeno
// obj = { ime: 'Drugi Test' }; // Greška