JavaScriptda funksiyalarda o'zgaruvchilarning bir xil nomlari
Faraz qilaylik, funksiyadan tashqarida ham, ichkarida ham
num o'zgaruvchisi mavjud. Bu holda,
lokal num o'zgaruvchisi bilan har qanday o'zgartirishlar
global num o'zgaruvchisiga hech qanday ta'sir ko'rsatmaydi:
let num = 1; // global o'zgaruvchi
function func() {
let num = 2; // lokal o'zgaruvchi
console.log(num);
}
func(); // funksiyani chaqiramiz, 2 chiqadi
console.log(num); // 1 chiqadi - global o'zgaruvchi o'zgarmadi
Lekin, agar biz lokal num o'zgaruvchisini
let orqali e'lon qilishni unutsak, unda funksiya ichida
hech qanday lokal num o'zgaruvchisi yaratilmaydi,
balki shunchaki global o'zgaruvchi o'zgartiriladi:
let num = 1;
function func() {
num = 2; // let yozishni unutdik - tashqi o'zgaruvchini o'zgartirmoqdamiz
console.log(num);
}
func(); // funksiyani chaqiramiz, 2 chiqadi
console.log(num); // 2 chiqadi - o'zgaruvchi o'zgardi
Bu erda ikkita holat bo'lishi mumkin: yoki biz haqiqatan ham
global o'zgaruvchini o'zgartirmoqchi edik (unda
hammasi yaxshi), yoki biz let ni unutib qo'ydik va tasodifan
global o'zgaruvchini o'zgartirdik.
Ikkinchi holat skriptning oldindan aytib bo'lmaydigan xatti-harakatlariga
olib keladigan, aniqlash qiyin bo'lgan xatodir.
Shuning uchun har doim, yangi o'zgaruvchi kiritayotganda, uni
let orqali e'lon qiling.
Kodni ishlamasdan, konsolda nima chiqishini aniqlang:
let num = 1;
function func() {
num = 2;
}
func();
console.log(num);
Kodni ishlamasdan, konsolda nima chiqishini aniqlang:
let num = 1;
function func() {
let num = 2;
}
func();
console.log(num);