Parameter äußerer und innerer Funktionen in JavaScript

Lassen Sie uns dafür sorgen, dass sowohl die äußere Funktion als auch die innere Parameter akzeptieren:

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

Geben wir den Parameter der äußeren Funktion an den Aufruf der inneren Funktion weiter:

javascriptfunction test(num) {
  function func(localNum) {
    console.log(localNum); // gibt 1 aus
  }
  
  func(num); //!! Parameter übergeben
}

test(1); // Zahl als Parameter übergeben

Es stellt sich heraus, dass in der inneren Funktion die Variable num als äußere Variable aus der Elternfunktion und die Variable localNum, die eine lokale Variable der inneren Funktion ist, verfügbar sein werden.

Beide diese Variablen werden die gleichen Werte haben:

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

test(1);

Der Unterschied zwischen ihnen wird folgender sein: wenn in der inneren Funktion die Variable num geändert wird - ändert sie sich auch in der äußeren Funktion:

javascriptfunction test(num) {
  function func(localNum) {
    num = 2; // Variable num ändern
  }
  
  func(num);   // Parameter übergeben
  console.log(num);  // gibt 2 aus
}

test(1); // Zahl als Parameter übergeben

Die Variable localNum hingegen wird lokal sein. Ihre Änderungen werden zu keinen Änderungen in der äußeren Funktion führen. Und die Variable localNum selbst wird außerhalb der inneren Funktion nicht sichtbar sein:

javascriptfunction test(num) {
  function func(localNum) {
    localNum = 2; // Variable num ändern
  }
  
  func(num); // Parameter übergeben
}

test(1); // Zahl als Parameter übergeben
Задание 1

Bestimmen Sie, ohne den Code auszuführen, was in der Konsole ausgegeben wird:

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

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

Bestimmen Sie, ohne den Code auszuführen, was in der Konsole ausgegeben wird:

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

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

Bestimmen Sie, ohne den Code auszuführen, was in der Konsole ausgegeben wird:

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

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

Bestimmen Sie, ohne den Code auszuführen, was in der Konsole ausgegeben wird:

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

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

Bestimmen Sie, ohne den Code auszuführen, was in der Konsole ausgegeben wird:

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

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

Bestimmen Sie, ohne den Code auszuführen, was in der Konsole ausgegeben wird:

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

test(1);