Parameters van Eksterne en Interne Funksies in JavaScript

Laat ons dit so maak dat beide die eksterne funksie en die interne funksie parameters aanvaar:

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

Laat ons die parameter van die eksterne funksie oordra na die aanroep van die interne funksie:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(localNum); // sal 1 uitdruk
  }
  
  func(num); //!! dra parameter oor
}

test(1); // dra 'n getal as parameter oor

Dit beteken dat in die interne funksie die veranderlike num beskikbaar sal wees as 'n eksterne veranderlike van die ouerfunksie, en die veranderlike localNum, wat 'n plaaslike veranderlike van die interne funksie is.

Albei hierdie veranderlikes sal dieselfde waardes hê:

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

test(1);

Die verskil tussen hulle sal die volgende wees: as ons in die interne funksie die veranderlike num verander - sal dit ook in die eksterne funksie verander:

javascriptfunction test(num) {
  function func(localNum) {
    num = 2; // verander die veranderlike num
  }
  
  func(num);   // dra parameter oor
  console.log(num);  // sal 2 uitdruk
}

test(1); // dra 'n getal as parameter oor

Maar die veranderlike localNum sal plaaslik wees. Veranderinge daaraan sal nie enige veranderinge in die eksterne funksie veroorsaak nie. En die veranderlike localNum self sal nie sigbaar wees buite die interne funksie nie:

javascriptfunction test(num) {
  function func(localNum) {
    localNum = 2; // verander die veranderlike num
  }
  
  func(num); // dra parameter oor
}

test(1); // dra 'n getal as parameter oor
Задание 1

Bepaal, sonder om die kode te laat loop, wat in die konsole uitgedruk sal word:

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

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

Bepaal, sonder om die kode te laat loop, wat in die konsole uitgedruk sal word:

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

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

Bepaal, sonder om die kode te laat loop, wat in die konsole uitgedruk sal word:

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

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

Bepaal, sonder om die kode te laat loop, wat in die konsole uitgedruk sal word:

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

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

Bepaal, sonder om die kode te laat loop, wat in die konsole uitgedruk sal word:

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

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

Bepaal, sonder om die kode te laat loop, wat in die konsole uitgedruk sal word:

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

test(1);