Ko‘rinish sohasi (scope)
Dasturlashda ko‘rinish sohasi (scope) deganda o‘zgaruvchilarning kodingizning turli qismlarida ko‘rinishi va ularga murojaat qilish mumkinligi tushuniladi.
Ko‘rinish sohasi (scope) nima?
Ko‘rinish sohasi dasturingizda o‘zgaruvchilarga qayerda murojaat qilish yoki ularni qayerda o‘zgartirish mumkinligini belgilaydi. U o‘zgaruvchilarning ko‘rinishi va yashash muddatini aniqlaydi — boshqacha aytganda, dasturingizning qaysi qismlari muayyan o‘zgaruvchini "ko‘ra" oladi va undan foydalana oladi.
Ko‘rinish sohasini idish (konteyner) deb tasavvur qiling. Bir idishda (ko‘rinish sohasida) aniqlangan o‘zgaruvchilar ko‘rinish sohasi turiga qarab boshqa idishlardagi kodga ko‘rinishi ham, ko‘rinmasligi ham mumkin.
Ko‘rinish sohasini tushunish muhim, chunki:
- U o‘zgaruvchilar o‘rtasidagi nomlar to‘qnashuvining oldini olishga yordam beradi
- U endi kerak bo‘lmagan o‘zgaruvchilarni tozalash orqali xotirani boshqarishga yordam beradi
- U o‘zgaruvchilarga murojaatni cheklash orqali xavfsizlikni ta’minlaydi
Ko‘rinish sohasi turlari
Dasturlashda ko‘rinish sohasining uchta asosiy turi bor:
Global ko‘rinish sohasi
Hech qanday funksiyadan tashqarida e’lon qilingan o‘zgaruvchilar global ko‘rinish sohasiga ega. Bu o‘zgaruvchilarga dasturingizning istalgan joyidan murojaat qilish mumkin.
Lokal ko‘rinish sohasi
Funksiya ichida e’lon qilingan o‘zgaruvchilar lokal ko‘rinish sohasiga ega. Bu o‘zgaruvchilarga faqat ular e’lon qilingan funksiya ichida murojaat qilish mumkin.
Blok ko‘rinish sohasi
Blok ichida (masalan, sikllar yoki if operatorlari ichida) e’lon qilingan o‘zgaruvchilar blok ko‘rinish sohasiga ega. Bu o‘zgaruvchilarga faqat o‘sha kod bloki ichida murojaat qilish mumkin. Blok ko‘rinish sohasini hamma dasturlash tillari ham qo‘llab-quvvatlamaydi.
Global ko‘rinish sohasi
Hech qanday funksiyadan tashqarida e’lon qilingan o‘zgaruvchilar global ko‘rinish sohasiga ega:
Misol
Funksiyadan tashqarida yaratilgan o‘zgaruvchilar global bo‘ladi va ulardan funksiya ichida foydalanish mumkin:
message = "Hello, World!"
def greet():
print(message)
greet()
let message = "Hello, World!";
function greet() {
console.log(message);
}
greet();
static String message = "Hello, World!";
public static void greet() {
System.out.println(message);
}
public static void main(String[] args) {
greet();
}
string message = "Hello, World!";
void greet() {
cout << message;
}
int main() {
greet();
return 0;
}
O‘zingiz sinab ko‘ring »
Lokal ko‘rinish sohasi
Funksiya ichida e’lon qilingan o‘zgaruvchilar lokal ko‘rinish sohasiga ega:
Misol
Funksiya ichida yaratilgan o‘zgaruvchilar lokal bo‘ladi va ulardan faqat o‘sha funksiya ichida foydalanish mumkin:
def calculate_sum():
result = 10 + 20
print(result)
calculate_sum()
print(result)
function calculateSum() {
let result = 10 + 20;
console.log(result);
}
calculateSum();
console.log(result);
public class Main {
public static void calculateSum() {
int result = 10 + 20;
System.out.println(result);
}
public static void main(String[] args) {
calculateSum();
System.out.println(result);
}
}
void calculateSum() {
int result = 10 + 20;
cout << result << endl;
}
int main() {
calculateSum();
cout << result;
return 0;
}
O‘zingiz sinab ko‘ring »
Blok ko‘rinish sohasi
Blok ichida (masalan, sikllar yoki if operatorlari ichida) e’lon qilingan o‘zgaruvchilar (dasturlash tiliga qarab) blok ko‘rinish sohasiga ega bo‘lishi mumkin:
Misol
Blok ichida yaratilgan o‘zgaruvchilarga faqat o‘sha blok ichida murojaat qilish mumkin:
if (true) {
let x = 10;
console.log(x);
}
console.log(x);
if (true) {
int x = 10;
System.out.println(x);
}
System.out.println(x);
if (true) {
int x = 10;
cout << x << endl;
}
cout << x;
return 0;
O‘zingiz sinab ko‘ring »
Turli tillarda ko‘rinish sohasi qoidalari
Python
- Global o‘zgaruvchilarga istalgan funksiyadan murojaat qilish mumkin
- Funksiya ichida global o‘zgaruvchini o‘zgartirish uchun
globalkalit so‘zidan foydalaning - Funksiya ichida e’lon qilingan o‘zgaruvchilar o‘sha funksiya uchun lokal bo‘ladi
- Python tilida blok ko‘rinish sohasi cheklangan (faqat list comprehension kabi ayrim holatlarda)
JavaScript
varbilan e’lon qilingan o‘zgaruvchilar funksiya ko‘rinish sohasiga egaletvaconstbilan e’lon qilingan o‘zgaruvchilar blok ko‘rinish sohasiga egavar,letyokiconstishlatmasdan e’lon qilingan o‘zgaruvchilar global bo‘lib qoladi- Global o‘zgaruvchilar global obyektning (brauzerlarda
window) xususiyatlari hisoblanadi
Java
- Sinf darajasidagi o‘zgaruvchilar (statik maydonlar) sinf ichida global o‘zgaruvchilar kabi ishlaydi
- Nusxa o‘zgaruvchilariga (instance variables) sinf nusxasining istalgan joyidan murojaat qilish mumkin
- Lokal o‘zgaruvchilarga faqat ular e’lon qilingan metod ichida murojaat qilish mumkin
- Blok ko‘rinish sohasidagi o‘zgaruvchilarga faqat ular e’lon qilingan blok ichida murojaat qilish mumkin
- O‘zgaruvchilar ishlatilishidan oldin e’lon qilinishi shart
C++
- Global o‘zgaruvchilarga butun dastur davomida murojaat qilish mumkin
- Barcha funksiyalardan tashqarida e’lon qilingan o‘zgaruvchilar global ko‘rinish sohasiga ega
- Lokal o‘zgaruvchilarga faqat ular e’lon qilingan funksiya ichida murojaat qilish mumkin
- Blok ko‘rinish sohasidagi o‘zgaruvchilarga faqat ular e’lon qilingan blok ichida murojaat qilish mumkin
- Statik o‘zgaruvchilar funksiya chaqiruvlari orasida o‘z qiymatini saqlab qoladi
Eng yaxshi amaliyotlar
- Global o‘zgaruvchilardan imkon qadar kam foydalaning
- O‘zgaruvchilarni imkon qadar eng kichik ko‘rinish sohasida saqlang
- Aniq va tushunarli o‘zgaruvchi nomlaridan foydalaning
- Dasturlash tillari o‘rtasidagi ko‘rinish sohasi farqlaridan xabardor bo‘ling
Eslatma: Ko‘rinish sohasini tushunish nomlar to‘qnashuvining oldini oladi va kodingizni qo‘llab-quvvatlashni osonlashtiradi.
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
