JavaScript-Funktiondefinition

Kursempfehlung: function JavaScript-Funktionen werden durchSchlüsselwortdefinieren.

können Sie FunktionenDeklarationoder FunktionAusdruck

Funktionserklärung

In diesem Tutorial haben Sie früher gelernt, durch die folgende SyntaxDeklarationFunktion:

function Funktionsname(Parameter) {
   Auszuführendes Code
}

Funktionen, die deklariert wurden, werden nicht direkt ausgeführt. Sie werden "zur späteren Verwendung gespeichert" und werden später ausgeführt, wenn sie aufgerufen werden.

Beispiel

function myFunction(a, b) {
     return a * b;
}

Probieren Sie es selbst aus

Das Semikolon wird verwendet, um ausführbare JavaScript-Anweisungen zu trennen.

Da FunktionenDeklarationsind nicht ausführbare Anweisungen und enden selten mit einem Semikolon.

Funktionsausdrücke

JavaScript-Funktionen können auchAusdruckdefiniert.

Funktionsausdrücke können in Variablen gespeichert werden:

Beispiel

var x = function(a, b) {return a * b};

Probieren Sie es selbst aus

Nachdem die Funktionsausdrücke in einer Variablen gespeichert wurden, kann diese Variable als Funktion verwendet werden:

Beispiel

var x = function(a, b) {return a * b};
var z = x(4, 3);

Probieren Sie es selbst aus

Die obige Funktion ist tatsächlich eineAnonyme Funktionen(namelose Funktionen)。

Funktionen, die in Variablen gespeichert sind, benötigen keinen Funktionsnamen. Sie werden immer mit dem Variablennamen aufgerufen.

Die obige Funktion endet mit einem Semikolon, weil sie ein Teil eines ausführbaren Statements ist.

Function() Konstruktor

Wie Sie in den vorherigen Beispielen gesehen haben, werden JavaScript-Funktionen durch function Schlüsselwort definiert werden.

Funktionen können auch durch ein benanntes Function() integrierten JavaScript-Funktionskonstruktors verwenden, um definiert zu werden.

Beispiel

var myFunction = new Function("a", "b", "return a * b");
var x = myFunction(4, 3);

Probieren Sie es selbst aus

Sie müssen tatsächlich den Funktionskonstruktor nicht verwenden. Der obige Beispiel kann auch so geschrieben werden:

Beispiel

var myFunction = function (a, b) {return a * b};
var x = myFunction(4, 3);

Probieren Sie es selbst aus

In den meisten Fällen können Sie das Verwenden des new Schlüsselwort.

Funktionshoisting

In diesem Tutorial haben Sie bereits gelernt, "Hoisting" (hoisting).

Hoisting ist das, was JavaScript tutDeklarationStandardverhalten, das Variablen- und Funktionsdeklarationen an die Oberseite des aktuellen Bereichs verschiebt.

Hoisting wird auf Variablendeklarationen und Funktionsdeklarationen angewendet.

Daher können JavaScript-Funktionen vor ihrer Deklaration aufgerufen werden:

myFunction(5);
 function myFunction(y) {
     return y * y;
}

Funktionen, die durch Ausdrücke definiert werden, werden nicht nach oben gehoben.

Selbstaufrufende Funktionen

Funktionsausdrücke können als "selbstaufrufend" verwendet werden.

Selbstaufrufende Ausdrücke werden automatisch aufgerufen (gestartet), ohne dass eine explizite Aufrufung erforderlich ist.

Funktionsausdrücke werden automatisch ausgeführt, wenn sie von einem ()

Sie können keine Funktionsdeklaration selbstaufrufen.

Sie müssen Klammern um die Funktion hinzufügen, um anzuzeigen, dass es sich um eine Funktionsausdrucksform handelt:

Beispiel

(function () {
    var x = "Hello!!";      // Ich rufe mich selbst auf
}();

Probieren Sie es selbst aus

Die obige Funktion ist tatsächlich eineAnonyme selbstaufrufende Funktionen(namelose Funktionen)。

Funktionen können als Werte verwendet werden

JavaScript-Funktionen können als Werte verwendet werden:

Beispiel

function myFunction(a, b) {
    return a * b;
}
var x = myFunction(4, 3);

Probieren Sie es selbst aus

JavaScript-Funktionen können in Ausdrücken verwendet werden:

Beispiel

function myFunction(a, b) {
    return a * b;
}
var x = myFunction(4, 3) * 2;

Probieren Sie es selbst aus

Funktionen sind Objekte

in JavaScript typeof Der Operator gibt für die Funktion "function"。

Aber es ist besser, JavaScript-Funktionen als Objekte zu beschreiben.

Jede JavaScript-Funktion hatEigenschaftundMethode

arguments.length Gibt die Anzahl der Parameter zurück, die die Funktion bei ihrem Aufruf erhält:

Beispiel

function myFunction(a, b) {
    return arguments.length;
}

Probieren Sie es selbst aus

toString() Die Methode gibt als String die Funktion zurück:

Beispiel

function myFunction(a, b) {
    return a * b;
}
var txt = myFunction.toString();

Probieren Sie es selbst aus

Funktionen, die als Objektattribute definiert sind, werden als Objektmethoden bezeichnet.

Funktionen, die zum Erstellen neuer Objekte entwickelt wurden, werden als Objekt-Konstruktoren (Objekt-Konstruktoren) bezeichnet.

Pfeilfunktionen

Pfeilfunktionen erlauben die Verwendung einer kurzen Syntax zum Schreiben von Funktionsausdrücken.

Sie benötigen kein Schlüsselwort 'function', kein Schlüsselwort 'return' und keine Klammern.

Beispiel

// ES5
var x = function(x, y) {
  return x * y;
}
// ES6
const x = (x, y) => x * y;

Probieren Sie es selbst aus

Pfeilfunktionen haben kein eigenes 'this'. Sie sind nicht geeignet, Objektmethoden zu definieren.

Pfeilfunktionen werden nicht aufgerufen. Sie müssen vor ihrer Verwendung definiert werden.

Die Verwendung von 'const' ist sicherer als die Verwendung von 'var', da die Funktionsausdrücke immer konstanten Wert sind.

Wenn die Funktion eine einzige Anweisung ist, kann der Schlüsselwort 'return' und die Klammern weggelassen werden. Daher kann es eine gute Gewohnheit sein, sie beizubehalten:

Beispiel

const x = (x, y) => { return x * y };

Probieren Sie es selbst aus

IE11 oder frühere Versionen unterstützen keine Pfeilfunktionen.