JavaScript функцияларындагы өзгөрмөлөрдүн бирдей аттары

Функциянын сыртында да, ичинде да num өзгөрмөсү бар деп коёлу. Бул учурда жергиликтүү num өзгөрмөсү менен кандай гана өзгөртүүлөр жасалса да, ал жалпы num өзгөрмөсүнө эч кандай таасир тигибейт:

javascriptlet num = 1; // жалпы өзгөрмө

function func() {
  let num = 2; // жергиликтүү өзгөрмө
  console.log(num);
}
func(); // функцияны чакырабыз, 2 чыгат

console.log(num); // 1 чыгат - жалпы өзгөрмө өзгөрбөдү

Бирок, эгерде биз жергиликтүү num өзгөрмөсүн let аркылуу жарыялоону унутсак, анда функциянын ичинде жергиликтүү num өзгөрмөсү түзүлбөйт, жалпы өзгөрмө гана өзгөрөт:

javascriptlet num = 1;

function func() {
  num = 2; // let жазууну унуттук - тышкы өзгөрмөнү өзгөртөбүз
  console.log(num);
}
func(); // функцияны чакырабыз, 2 чыгат

console.log(num); // 2 чыгат - өзгөрмө өзгөрдү

Бул жерде эки жол чыгат: же биз чын эле жалпы өзгөрмөнү өзгөртүүнү каалайбыз (анда баары жакшы), же биз let жазууну унутуп калып, туура эмес жалпы өзгөрмөнү өзгөртүп койдук.

Экинчи учур татаал табылчу ката болуп саналат, ал скрипттин алдын ала болжоого мүмкүн эмес жүрүм-турумуна алып барат. Ошондуктан ар дайым жаңы өзгөрмө киргизгенде, аны let аркылуу жарыялаңыз.

Задание 1

Кодду иштетпей эле, консолго эмне чыгарылаанын аныктаңыз:

javascriptlet num = 1;

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

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

Кодду иштетпей эле, консолго эмне чыгарылаанын аныктаңыз:

javascriptlet num = 1;

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

console.log(num);