JavaScriptda funktsiyalarda global o'zgaruvchilar
JavaScriptda (boshqa tillarda ko'pincha bunday emas) funksiyadan tashqarida aniqlangan o'zgaruvchilar ushbu funksiya ichida ko'rinadi. Bunday o'zgaruvchilar global deb ataladi. Keling, misol orqali ko'ramiz:
let num = 1; // funksiyadan tashqaridagi o'zgaruvchi
function func() {
console.log(num); // num o'zgaruvchisi funksiya ichida ko'rinadi
}
func(); // 1 ni chiqaradi
Aslida o'zgaruvchi funksiya aniqlanishidan oldin emas, balki uning chaqirilishidan oldin aniqlanishi kerak:
function func() {
console.log(num);
}
let num = 1; // funksiyadan tashqaridagi o'zgaruvchi
func(); // 1 ni chiqaradi
Agar o'zgaruvchining qiymatini o'zgartirsak va shundan so'ng
har safar funksiyani chaqirsak - console.log har
safar turli natijalarni chiqaradi:
function func() {
console.log(num);
}
let num; // o'zgaruvchini e'lon qilamiz
num = 1; // qiymatini 1 qilib belgilaymiz
func(); // 1 ni chiqaradi
num = 2; // qiymatini 2 qilib belgilaymiz
func(); // 2 ni chiqaradi
Agar bizda bir nechta funksiyalar bo'lsa, global o'zgaruvchi ushbu funksiyalarning har birida mavjud bo'ladi:
function func1() {
console.log(num);
}
function func2() {
console.log(num);
}
let num = 1;
func1(); // 1 ni chiqaradi
func2(); // 1 ni chiqaradi
Agar funksiyalarning birida global o'zgaruvchi bilan o'zgartirishlar sodir bo'lsa, u holda bu o'zgaruvchi ushbu o'zgaruvchidan foydalanadigan barcha funksiyalarda o'zgaradi:
function func1() {
console.log(num);
num++; // global o'zgaruvchini o'zgartiramiz
}
function func2() {
console.log(num);
}
let num = 1;
func1(); // 1 ni chiqaradi
func2(); // 2 ni chiqaradi
Funksiyalarning istalgani osongina global o'zgaruvchini o'zgartirishi mumkin bo'lgani uchun, ularning ishlatilishi aniqlashtirish qiyin bo'lgan xatolar manbai hisoblanadi. Shu sababli skriptda global o'zgaruvchilardan foydalanish minimal darajada cheklanishi kerak. Ularning umuman bo'lmasligi yoki eng kam miqdorda bo'lishi maqsadga muvofiqdir.
Kodni ishlamasdan, konsolda nima chiqishini aniqlang:
let num = 1;
function func() {
console.log(num);
}
func();
Kodni ishlamasdan, konsolda nima chiqishini aniqlang:
let num = 1;
function func() {
console.log(num);
}
num = 2;
func();
Kodni ishlamasdan, konsolda nima chiqishini aniqlang:
function func() {
console.log(num);
}
let num;
num = 1;
func();
num = 2;
func();