JavaScriptда функциялардаги ўзгарувчиларнинг бир хил номлари

Функциянинг ташқарисида ҳам, ичида ҳам num ўзгарувчиси мавжуд бўлсин. Бундай ҳолда, num локал ўзгарувчиси билан амалга оширилган ҳар қандай ўзгартиришлар num глобал ўзгарувчисига ҳеч қандай таъсир кўрсатмайди:

javascriptlet num = 1; // глобал ўзгарувчи

function func() {
  let num = 2; // локал ўзгарувчи
  console.log(num);
}
func(); // функцияни чақирамиз, 2 чиқади

console.log(num); // 1 чиқади - глобал ўзгарувчи ўзгармади

Аммо, агар биз 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);