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);