English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
函数允许您定义一个代码块,给它命名,然后根据需要反复执行。
可以使用function关键字定义函数,也可以使用()运算符执行函数。
在本教程的前面,您了解了使用以下语法声明函数:
function nameOfFunction(parameters) { // Auszuführende Anweisungen }
声明的函数不会立即执行。声明的函数只是对函数命名,并指定函数被调用时的操作。
function greet() {}} document.write("Hello, World!"); }Testen Sie heraus‹/›
在上面的示例中,我们已经声明(定义)了一个名为greet的函数,该函数输出一条消息“Hello,World!”。可以使用()运算符调用此功能,例如greet()。
JavaScript允许我们将函数分配给变量,然后将该变量用作函数。它称为Funktionsexpression。
//函数表达式可以存储在变量中 var sum = function(a, b) { return a + b; ); // 该变量可用作函数 var x = sum(100, 8);Testen Sie heraus‹/›
上面的函数实际上是一个匿名函数(没有名称的函数)。
存储在变量中的函数不需要函数名。始终使用变量名来调用它们。
上面的函数以分号结尾,因为它是可执行语句的一部分。
在本教程的前面,您了解了JavaScript提升。
提升是JavaScript将声明移到当前作用域顶部的默认行为。
因此,可以在声明JavaScript函数之前对其进行调用:
// 函数声明前调用 greet(); function greet() {}} document.getElementById("output").innerHTML = "Hallo Welt"; }Testen Sie heraus‹/›
Funktionen, die durch Ausdrücke definiert werden, werden nicht hochgezogen.
Eine Funktionsexpression kann "selbstaufrufend" gemacht werden.
Ein selbstaufrufender JavaScript-Funktion wird sofort nach der Definition ausgeführt.
Automatische Ausführung (Start) eines selbstaufrufenden Ausdrucks, ohne dass er aufgerufen werden muss. Auch als IIFE (immediately invoked function expression) bezeichnet.
Wenn eine Funktionsexpression durch () abgeschlossen wird, wird die Funktionsexpression automatisch ausgeführt.
(function () { // Auszuführende Anweisungen })();Testen Sie heraus‹/›
Durch Zuweisung einer IIFE (immediately invoked function expression) an eine Variable wird der Rückgabewert der Funktion gespeichert, nicht die Funktion selbst:
let result = (function () { let name = "Seagull"; return name; })(); //Erstellt sofortige Ausgabe result; // "Seagull"Testen Sie heraus‹/›
Das folgende Beispiel zeigt, wie Parameter an eine IIFE (immediately invoked function expression) übergeben werden:
(function (x, y) { document.getElementById("output").innerHTML = x + y; })(5, 10);Testen Sie heraus‹/›
Ein Callback-Funktion ist eine Funktion, die als Parameter an eine andere Funktion übergeben wird und dann in der externen Funktion aufgerufen wird, um eine bestimmte Routine oder Operation durchzuführen.
function greet(name) { alert("Hallo " + name); } function processInput(callback) { let name = prompt("Bitte geben Sie Ihren Namen ein:"); callback(name); } // Die Funktion greet wird als Argument in die Funktion processInput übergeben processInput(greet);Testen Sie heraus‹/›
Das obige Beispiel ist ein synchrone Callback, da es sofort ausgeführt wird.
Allerdings werden Callbacks normalerweise verwendet, um Code nach Abschluss asynchroner Operationen fortzuführen.
Rekursion ist eine Technik iterativer Operationen, bei der eine Funktion sich selbst wiederholt bis zum Erreichen des Ergebnisses aufruft.
Das folgende Beispiel zeigt, wie die Fakultät einer Zahl rekursiv berechnet wird:
var factorial = function(number) { if (number <= 0) { zurück 1; } else { zurück (number * Fakultät von (number - 1)); } ); document.getElementById("output").innerHTML = factorial(5);Testen Sie heraus‹/›
Bis jetzt haben wir gezeigt, wie man Funktionen mit dem Schlüsselwort 'function' definiert.
Aber seit ECMAScript 6Ab dem Anfang gibt es eine aktualisierte, kürzere Methode zur Definition eines Namens, derPfeilfunktionAusdrückeFunktion。
Es ist bekannt, dassPfeilfunktionEs wird ein Gleichheitszeichen gefolgt von einem Grossen-Zeichen verwendet: =>.
//Funktionsexpression var sum = function(x, y) { return x + y; } // Pfeilfunktion const sum = (x, y) => x + y;Testen Sie heraus‹/›
Pfeilfunktionen haben kein eigenes 'this'. Sie sind nicht geeignet für die DefinitionObjektmethoden。
Pfeilfunktionen werden nicht hochgestuft. Sie müssen sie zuerst definieren,Dann verwendenSie.
Die Verwendung von 'const' ist sicherer als die Verwendung von 'var', da die Funktionsausdrücke immer Konstanten sind.
Wenn die Funktion nur eine Anweisung enthält, kann der Schlüsselwort und die Klammer weggelassen werden. Daher könnte es eine gute Angewohnheit sein, sie beizubehalten.
Der Rückgabewert kann weggelassen werden, wenn die Funktion nur eine Anweisung enthält. Daher ist es eine gute Angewohnheit, sie beizubehalten.
const sum = (x, y) => { return x + y };Testen Sie heraus‹/›