JavaScript-də funksiyalarda eyni dəyişən adları
Tutaq ki, həm funksiyanın xaricində, həm də daxilində
num dəyişəni var. Bu halda lokal num
dəyişəni ilə hər hansı dəyişiklik qlobal num
dəyişəninə heç bir təsir göstərmir:
let num = 1; // qlobal dəyişən
function func() {
let num = 2; // lokal dəyişən
console.log(num);
}
func(); // funksiyanı çağırırıq, 2 çap olunacaq
console.log(num); // 1 çap olunacaq - qlobal dəyişən dəyişmədi
Lakin, lokal num dəyişənini let ilə
elan etməyi unutsaq, onda funksiya daxilində lokal
num dəyişəni yaranmayacaq, sadəcə qlobal
dəyişən dəyişəcək:
let num = 1;
function func() {
num = 2; // let yazmağı unutduq - xarici dəyişəni dəyişirik
console.log(num);
}
func(); // funksiyanı çağırırıq, 2 çap olunacaq
console.log(num); // 2 çap olunacaq - dəyişən dəyişdi
Burada iki vəziyyət ola bilər: ya biz həqiqətən də
qlobal dəyişəni dəyişmək istəyirdik (onda hər şey
qaydasındadır), ya da biz let yazmağı unutduq
və təsadüfən qlobal dəyişəni dəyişdirdik.
İkinci hal, skriptin gözlənilməz davranışına səbəb
olan, aşkar edilmesi çətin bir xətadır. Buna görə də,
həmişə yeni dəyişən təqdim edərkən onu let
ilə elan edin.
Kodu işə salmadan müəyyən edin ki, konsola nə çap olunacaq:
let num = 1;
function func() {
num = 2;
}
func();
console.log(num);
Kodu işə salmadan müəyyən edin ki, konsola nə çap olunacaq:
let num = 1;
function func() {
let num = 2;
}
func();
console.log(num);