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