Գլոբալ փոփոխականներ և ֆունկցիաների պարամետրերը JavaScript-ում

Ենթադրենք ունենք ֆունկցիա, որն ընդունում է թիվ որպես պարամետր՝

javascriptfunction func(localNum) {
  console.log(localNum);
}

Ենթադրենք ֆունկցիայից դուրս կա num փոփոխականը՝

javascriptfunction func(localNum) {
  console.log(localNum);
}

let num = 1; // արտաքին գլոբալ փոփոխական

Եկեք կանչենք մեր ֆունկցիան՝ փոխանցելով num փոփոխականը որպես պարամետր՝

javascriptfunction func(localNum) {
  console.log(localNum);
}

let num = 1;
func(num); // կանչում ենք ֆունկցիան պարամետրով, կարտածի 1

Ստացվում է, որ ֆունկցիայի ներսում հասանելի կլինի և՛ localNum փոփոխականը (ֆունկցիայի պարամետրը), և՛ num փոփոխականը (որպես արտաքին փոփոխական)՝

javascriptfunction func(localNum) {
  console.log(num); // կարտածի 1
  console.log(localNum); // կարտածի 1
}

let num = 1;
func(num);

localNum փոփոխականն ինքնին կլինի ֆունկցիայի լոկալ փոփոխական և չի լինի հասանելի դրսից՝

javascriptfunction func(localNum) {
  
}

let num = 1;
func(num); // կանչում ենք ֆունկցիան պարամետրով
console.log(localNum); // կտա սխալ

Քանի որ localNum փոփոխականը լոկալ է, ապա դրա հետ կատարվող ցանկացած փոփոխություն ոչինչ չի փոխի դրսում՝

javascriptfunction func(localNum) {
  localNum = 2; // ոչինչ չի փոխում դրսում
}

let num = 1;
func(num);

Եթե փոխենք num փոփոխականը (գլոբալը) ներսում, ապա փոփոխությունները կհայտնվեն նաև դրսում՝

javascriptfunction func(localNum) {
  num = 2;
}

let num = 1;
func(num);
console.log(num); // կարտածի 2

Սակայն, եթե ֆունկցիայի ներսում num փոփոխականը հայտարարենք let-ով, ապա մենք այդպիսով կստեղծենք լոկալ num փոփոխական, որն ոչ մի ազդեցություն չի ունենա արտաքին փոփոխականի վրա՝

javascriptfunction func(localNum) {
  let num = 2; // հայտարարենք let-ով
}

let num = 1;
func(num);
console.log(num); // կարտածի 1 - ոչինչ չի փոխվել
Задание 1

Որոշեք՝ առանց կոդը գործարկելու, թե ինչ կարտածվի կոնսոլում՝

javascriptfunction func(localNum) {
  console.log(localNum);
}

func(1);
Задание 2

Որոշեք՝ առանց կոդը գործարկելու, թե ինչ կարտածվի կոնսոլում՝

javascriptfunction func(localNum) {
  console.log(localNum);
}

let num = 1;
func(num);
Задание 3

Որոշեք՝ առանց կոդը գործարկելու, թե ինչ կարտածվի կոնսոլում՝

javascriptfunction func(localNum) {
  console.log(localNum);
}

let num = 1;
func(num);
num = 2;
Задание 4

Որոշեք՝ առանց կոդը գործարկելու, թե ինչ կարտածվի կոնսոլում՝

javascriptlet num = 1;

function func(localNum) {
  console.log(localNum);
}

num = 2;
func(num);
Задание 5

Որոշեք՝ առանց կոդը գործարկելու, թե ինչ կարտածվի կոնսոլում՝

javascriptfunction func(localNum) {
  localNum = 2;
}

let num = 1;
func(num);
console.log(num);
Задание 6

Որոշեք՝ առանց կոդը գործարկելու, թե ինչ կարտածվի կոնսոլում՝

javascriptfunction func(localNum) {
  num = 2;
}

let num = 1;
func(num);
console.log(num);
Задание 7

Որոշեք՝ առանց կոդը գործարկելու, թե ինչ կարտածվի կոնսոլում՝

javascriptfunction func(localNum) {
  let num = 2;
}

let num = 1;
func(num);
console.log(num);