Väliste ja sisemiste funktsioonide parameetrid JavaScriptis

Teeme nii, et nii välimine kui ka sisemine funktsioon võtaksid parameetreid vastu:

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

Edastame välimise funktsiooni parameetri sisemise funktsiooni väljakutsele:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(localNum); // väljastab 1
  }
  
  func(num); //!! edastame parameetri
}

test(1); // edastame parameetrina arvu

Seega on sisemises funktsioonis kättesaadav muutuja num kui väline muutuja vanemfunktsioonist ja muutuja localNum, mis on sisemise funktsiooni lokaalne muutuja.

Mõlemal neist muutujatest on samad väärtused:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(num); // väljastab 1
    console.log(localNum); // väljastab 1
  }
  
  func(num);
}

test(1);

Nende erinevus on järgmine: kui sisemises funktsioonis muudetakse muutujat num - siis see muutub ka välimises funktsioonis:

javascriptfunction test(num) {
  function func(localNum) {
    num = 2; // muudame muutujat num
  }
  
  func(num);   // edastame parameetri
  console.log(num);  // väljastab 2
}

test(1); // edastame parameetrina arvu

Muutuja localNum on aga lokaalne. Selle muutmine ei too kaasa mingisuguseid muutusi välimises funktsioonis. Ja see muutuja localNum ei ole nähtav väljaspool sisemist funktsiooni:

javascriptfunction test(num) {
  function func(localNum) {
    localNum = 2; // muudame muutujat num
  }
  
  func(num); // edastame parameetri
}

test(1); // edastame parameetrina arvu
Задание 1

Määrake, koodi käivitamata, mis väljastatakse konsooli:

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

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

Määrake, koodi käivitamata, mis väljastatakse konsooli:

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

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

Määrake, koodi käivitamata, mis väljastatakse konsooli:

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

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

Määrake, koodi käivitamata, mis väljastatakse konsooli:

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

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

Määrake, koodi käivitamata, mis väljastatakse konsooli:

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

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

Määrake, koodi käivitamata, mis väljastatakse konsooli:

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

test(1);