Junior
JavaScriptте өзгөрмөлөрдү кандай жолдор менен жарыялоо мүмкүн? Бул ыкмалардын айырмачылыктарын атаңыз.
sobes.tech AI
AIден жооп
JavaScriptте өзгөрмөлөрдү үч жол менен жарыялоо мүмкүн: var, let, const.
Алардын айырмачылыктары:
| Айырма | var |
let |
const |
|---|---|---|---|
| Көрүнүү чөйрөсү | Функциялык | Блоктук | Блоктук |
| Өзгөртүү мүмкүнчүлүгү | Мүмкүн | Мүмкүн | Мүмкүн эмес |
| Hoisting | Жариялоо жана баштапкы маанини undefined кылып көтөрөт |
Жариялоо көтөрүлөт, бирок баштапкы мааниси жок | Жариялоо көтөрүлөт, бирок баштапкы мааниси жок |
Мисалдар:
// var
function exampleVar() {
var x = 10; // Функциялык чөйрө
if (true) {
var x = 20; // Бир функция ичинде кайра аныктоо мүмкүн
console.log(x); // 20
}
console.log(x); // 20 (ifтен чыккан өзгөрмө x жеткиликтүү)
}
console.log(x); // Ката: ReferenceError: x аныкталган эмес (x функциядан тышкары көрүнбөйт)
// Hoisting var
console.log(a); // undefined
var a = 5;
console.log(a); // 5
// let
function exampleLet() {
let y = 10; // Блоктук чөйрө
if (true) {
let y = 20; // Бир эле блок ичинде кайра аныктоо мүмкүн эмес
console.log(y); // 20 (башка y өзгөрмөсү)
}
console.log(y); // 10 (блоктун сыртына чыккан y)
}
console.log(y); // Ката: ReferenceError: y аныкталган эмес
// Hoisting let
// console.log(b); // Ката: ReferenceError: 'b' алдын ала жеткиликтүү эмес
let b = 5;
console.log(b); // 5
// const
function exampleConst() {
const z = 10; // Блоктук чөйрө
// z = 20; // Ката: TypeError: Константа өзгөрмөсүнө өзгөртүү мүмкүн эмес
if (true) {
const z = 20; // Бир эле блок ичинде кайра аныктоо мүмкүн эмес
console.log(z); // 20 (башка z өзгөрмөсү)
}
console.log(z); // 10 (блоктун сыртына чыккан z)
}
console.log(z); // Ката: ReferenceError: z аныкталган эмес
// Hoisting const
// console.log(c); // Ката: ReferenceError: 'c' алдын ала жеткиликтүү эмес
const c = 5;
console.log(c); // 5
// `const` менен жарыяланган объекттер жана массивдердин мазмұнын өзгөртүүгө болот
const obj = { аты: 'Тест' };
obj.аты = 'Жаңы Тест'; // Мүмкүн
// obj = { аты: 'Башка Тест' }; // Ката