Ulkoisten ja sisäisten funktioiden parametrit JavaScriptissä

Tehdään niin, että sekä ulkoinen funktio että sisäinen ottavat vastaan parametreja:

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

Annetaan ulkoisen funktion parametri sisäisen funktion kutsulle:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(localNum); // tulostaa 1
  }
  
  func(num); //!! välitetään parametri
}

test(1); // välitetään parametrina numero

Käy niin, että sisäisessä funktiossa on käytettävissä muuttuja num ulkoisena muuttujana vanhempifunktiosta ja muuttuja localNum, joka on sisäisen funktion lokaali muuttuja.

Molemmilla näistä muuttujista on samat arvot:

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

test(1);

Ero niiden välillä on seuraava: jos sisäisessä funktiossa muutetaan muuttujaa num - se muuttuu myös ulkoisessa funktiossa:

javascriptfunction test(num) {
  function func(localNum) {
    num = 2; // muutetaan muuttujaa num
  }
  
  func(num);   // välitetään parametri
  console.log(num);  // tulostaa 2
}

test(1); // välitetään parametrina numero

Ja muuttuja localNum on lokaali. Sen muutokset eivät johda mihinkään muutoksiin ulkoisessa funktiossa. Eikä muuttuja localNum itsessään näy sisäisen funktion ulkopuolella:

javascriptfunction test(num) {
  function func(localNum) {
    localNum = 2; // muutetaan muuttujaa num
  }
  
  func(num); // välitetään parametri
}

test(1); // välitetään parametrina numero
Задание 1

Päätä, käyttämättä koodia, mitä tulostetaan konsoliin:

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

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

Päätä, käyttämättä koodia, mitä tulostetaan konsoliin:

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

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

Päätä, käyttämättä koodia, mitä tulostetaan konsoliin:

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

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

Päätä, käyttämättä koodia, mitä tulostetaan konsoliin:

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

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

Päätä, käyttämättä koodia, mitä tulostetaan konsoliin:

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

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

Päätä, käyttämättä koodia, mitä tulostetaan konsoliin:

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

test(1);