Zunächst einmal gibt es ein Konzept: Es handelt sich nicht um eine Sprache, die Funktionen unterstützt. Diese Sprache kann als „funktionale Sprache“ bezeichnet werden. Neben dem Aufruf verfügen Funktionen in funktionalen Sprachen auch über einige andere Eigenschaften. Es gibt drei Punkte:
1. Funktionen sind Operanden
2. Daten innerhalb der Funktion speichern
3. Operationen innerhalb der Funktion haben keine Nebenwirkungen außerhalb der Funktion
1. Funktionen sind Operanden
Wenn eine normale Funktion aufgerufen wird, kann sie abstrakt wie folgt verstanden werden: Die Funktion ist ein Operator und die übergebenen Parameter sind die Operanden;
Wenn jedoch eine Funktion in JavaScript als Parameter einer anderen Funktion verwendet wird, wird eine Referenz übergeben, und dieser „eingehende Parameter“ kann als Operand verstanden werden. Die Schlussfolgerung ist, dass Funktionen (als „eingehende Parameter“) die Bedeutung von Operanden haben und sich „Funktionsparameter“ nicht von gewöhnlichen Parametern unterscheiden.
2. Daten innerhalb der Funktion speichern
In imperativen Sprachen können private Variablen (lokale Variablen) innerhalb von Funktionen nicht gespeichert werden. Aus Sicht der Programmausführung werden lokale Variablen auf dem Stapel zugewiesen, und nach Beendigung der Funktionsausführung wird der belegte Stapel freigegeben. Daher können die Daten innerhalb der Funktion nicht gespeichert werden.
In einer JavaScript-Funktion können private Variablen innerhalb der Funktion geändert werden, und wenn man die Funktion erneut „betritt“, bleibt der geänderte Zustand bestehen. Das folgende Beispiel veranschaulicht diese Funktion:
Kopieren Sie den Codecode wie folgt:
var set,get;
Funktion MyFunc(){
var-Wert = 100;
Funktion set_value(v){
Wert = v;
}
Funktion get_value(){
Rückgabewert;
}
set = set_value;
get = get_value;
}
MyFunc();
console.log(get()); //100
set(300);
console.log(get()); //300
Ein offensichtlicher Vorteil besteht darin, dass, wenn ein Datenelement innerhalb einer Funktion beibehalten werden kann, die Funktion (als Konstruktor) die Daten verwenden kann, um Operationen auszuführen, wenn sie einer Instanz und zwischen mehreren Instanzen zugewiesen werden, da die Daten in verschiedenen Ins vorliegen Schließung, sie werden sich nicht gegenseitig beeinflussen.
Um es objektorientiert zu erklären, bedeutet es, dass verschiedene Instanzen ihre eigenen privaten Daten haben (kopiert von einigen öffentlichen Daten). Das folgende Beispiel veranschaulicht diese Funktion:
Kopieren Sie den Codecode wie folgt:
Funktion MyObject(){
var-Wert = 100;
this.setValue = function(){
Wert = v;
}
this.showValue = function(){
console.log(Wert);
}
}
var obj1 = new MyObject();
var obj2 = new MyObject();
obj2.setValue(300);
obj1.showValue(); //100;
3. Operationen innerhalb der Funktion haben keine Nebenwirkungen außerhalb der Funktion
Die Bedeutung dieser Funktion ist:
* Die Funktion verwendet den Eingabeparameter, um Operationen auszuführen, ohne ihn zu ändern (wird als Wertparameter und nicht als variabler Parameter verwendet).
* Der Wert anderer Daten außerhalb der Funktion (z. B. globale Variablen) wird während des Vorgangs nicht geändert.
* Nach Abschluss des Vorgangs wird der Wert über „Funktionsrückgabe“ an das externe System übertragen.
Solche Funktionen haben im Betrieb keine Nebenwirkungen auf das externe System. Wir haben jedoch festgestellt, dass JavaScript die Referenzierung und Änderung globaler Variablen innerhalb von Funktionen ermöglicht und dass globale Variablen sogar deklariert werden können. Dadurch werden seine funktionellen Eigenschaften tatsächlich zerstört.
Darüber hinaus ermöglicht JavaScript auch die Änderung von Objekt- und Array-Mitgliedern innerhalb von Funktionen – diese Mitglieder sollten durch Objektmethoden und nicht durch andere Funktionen außerhalb des Objektsystems geändert werden.
Also: Diese Funktion von JavaScript kann nur durch die Programmiergewohnheiten der Entwickler gewährleistet werden.