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:

javascriptlet 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:

javascriptlet 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.

Задание 1

Kodu işə salmadan müəyyən edin ki, konsola nə çap olunacaq:

javascriptlet num = 1;

function func() {
  num = 2;
}
func();

console.log(num);
Задание 2

Kodu işə salmadan müəyyən edin ki, konsola nə çap olunacaq:

javascriptlet num = 1;

function func() {
  let num = 2;
}
func();

console.log(num);