გარე და შიდა ფუნქციების პარამეტრები JavaScript-ში

მოდით, გავაკეთოთ ისე, რომ გარე ფუნქციაც და შიდაც მიიღებდეს პარამეტრებს:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(localNum);
  }
}

გარე ფუნქციის პარამეტრი გადავცეთ შიდა ფუნქციის გამოძახებას:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(localNum); // გამოიტანს 1-ს
  }
  
  func(num); //!! პარამეტრს გადავცემთ
}

test(1); // პარამეტრად რიცხვს გადავცემთ

გამოდის, რომ შიდა ფუნქციაში იქნება ხელმისაწვდომი ცვლადი num, როგორც გარე ცვლადი მშობელი ფუნქციიდან და ცვლადი localNum, რომელიც შიდა ფუნქციის ლოკალური ცვლადია.

ამ ორ ცვლადს ექნება იგივე მნიშვნელობები:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(num); // გამოიტანს 1-ს
    console.log(localNum); // გამოიტანს 1-ს
  }
  
  func(num);
}

test(1);

მათ შორის განსხვავება იქნება შემდეგში: თუ შიდა ფუნქციაში შევცვლით ცვლადს num - ის შეიცვლება გარე ფუნქციაშიც:

javascriptfunction test(num) {
  function func(localNum) {
    num = 2; // ვცვლით num ცვლადს
  }
  
  func(num);   // პარამეტრს გადავცემთ
  console.log(num);  // გამოიტანს 2-ს
}

test(1); // პარამეტრად რიცხვს გადავცემთ

ხოლო ცვლადი localNum იქნება ლოკალური. მისი ცვლილებები არ გამოიწვევს რაიმე ცვლილებას გარე ფუნქციაში. და თავად ცვლადი localNum არ იქნება ხილული შიდა ფუნქციის გარეთ:

javascriptfunction test(num) {
  function func(localNum) {
    localNum = 2; // ვცვლით num ცვლადს
  }
  
  func(num); // პარამეტრს გადავცემთ
}

test(1); // პარამეტრად რიცხვს გადავცემთ
Задание 1

განსაზღვრეთ, კოდის გაშლის გარეშე, რა გამოიტანს კონსოლში:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(localNum);
  }
  
  func(num);
}

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

განსაზღვრეთ, კოდის გაშლის გარეშე, რა გამოიტანს კონსოლში:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(localNum);
  }
  
  func(num + 1);
}

test(1);
Задание 3

განსაზღვრეთ, კოდის გაშლის გარეშე, რა გამოიტანს კონსოლში:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(num);
  }
  
  func(num + 1);
}

test(1);
Задание 4

განსაზღვრეთ, კოდის გაშლის გარეშე, რა გამოიტანს კონსოლში:

javascriptfunction test(num) {
  function func(localNum) {
    localNum = 2;
  }
  
  func(num);
  console.log(num);
}

test(1);
Задание 5

განსაზღვრეთ, კოდის გაშლის გარეშე, რა გამოიტანს კონსოლში:

javascriptfunction test(num) {
  function func(localNum) {
    localNum = 2;
  }
  
  func(num);
  console.log(localNum);
}

test(1);
Задание 6

განსაზღვრეთ, კოდის გაშლის გარეშე, რა გამოიტანს კონსოლში:

javascriptfunction test(num) {
  function func(localNum) {
    num = 2;
  }
  
  func(num);
  console.log(num);
}

test(1);