| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Statements/function | [Back] [Original] |
Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.
Diese Funktion ist gut etabliert und funktioniert auf vielen Gerten und in vielen Browserversionen. Sie ist seit Juli 2015 browserbergreifend verfgbar.
Die function Deklaration erstellt eine Bindung einer neuen Funktion mit einem gegebenen Namen.
Sie knnen Funktionen auch mithilfe des function Ausdrucks definieren.
function calcRectArea(width, height) {
return width * height;
}
console.log(calcRectArea(5, 6));
// Expected output: 30
function name(param0) {
statements
}
function name(param0, param1) {
statements
}
function name(param0, param1, /* , */ paramN) {
statements
}
nameDer Funktionsname.
param OptionalDer Name eines formalen Parameters fr die Funktion. Die maximale Anzahl von Argumenten variiert in verschiedenen Engines. Fr die Syntax der Parameter siehe die Referenz fr Funktionen.
statements OptionalDie Anweisungen, die den Rumpf der Funktion bilden.
Eine function Deklaration erstellt ein Function Objekt. Jedes Mal, wenn eine Funktion aufgerufen wird, gibt sie den Wert zurck, der durch die zuletzt ausgefhrte return Anweisung angegeben wird, oder undefined, wenn das Ende des Funktionsrumpfes erreicht ist. Siehe Funktionen fr detaillierte Informationen zu Funktionen.
function Deklarationen verhalten sich wie eine Mischung aus var und let:
let sind in strict mode Funktionen auf den am nchstgelegenen umgebenden Block beschrnkt.let knnen Funktionsdeklarationen auf der obersten Ebene eines Moduls oder innerhalb von Blcken im strict mode nicht durch eine andere Deklaration neu deklariert werden.var werden Funktionsdeklarationen auf oberster Ebene eines Skripts (strict oder non-strict) zu Eigenschaften von globalThis. Funktionsdeklarationen auf oberster Ebene eines Skripts oder Funktionsrumpfes (strict oder non-strict) knnen durch eine andere function oder var neu deklariert werden.Warnung: Im Nicht-strict Mode verhalten sich Funktionsdeklarationen innerhalb von Blcken seltsam. Deklarieren Sie Funktionen innerhalb von Blcken nur, wenn Sie sich im strict mode befinden.
Funktionen knnen bedingt deklariert werden das heit, eine Funktionsanweisung kann innerhalb einer if Anweisung geschachtelt werden. Im Nicht-strict Mode sind die Ergebnisse jedoch inkonsistent zwischen Implementierungen.
console.log(
`'foo' name ${
"foo" in globalThis ? "is" : "is not"
} global. typeof foo is ${typeof foo}`,
);
if (false) {
function foo() {
return 1;
}
}
// In Chrome:
// 'foo' name is global. typeof foo is undefined
//
// In Firefox:
// 'foo' name is global. typeof foo is undefined
//
// In Safari:
// 'foo' name is global. typeof foo is function
Die Wirkung auf den Gltigkeitsbereich und das Hoisting ndert sich nicht, unabhngig davon, ob der if-Krper tatschlich ausgefhrt wird.
console.log(
`'foo' name ${
"foo" in globalThis ? "is" : "is not"
} global. typeof foo is ${typeof foo}`,
);
if (true) {
function foo() {
return 1;
}
}
// In Chrome:
// 'foo' name is global. typeof foo is undefined
//
// In Firefox:
// 'foo' name is global. typeof foo is undefined
//
// In Safari:
// 'foo' name is global. typeof foo is function
Im strict mode sind Funktionsdeklarationen auf Blockebene auf diesen Block beschrnkt und werden an die Spitze des Blocks gehoben.
"use strict";
{
foo(); // Logs "foo"
function foo() {
console.log("foo");
}
}
console.log(
`'foo' name ${
"foo" in globalThis ? "is" : "is not"
} global. typeof foo is ${typeof foo}`,
);
// 'foo' name is not global. typeof foo is undefined
Funktionsdeklarationen in JavaScript werden an die Spitze des umgebenden Funktions- oder globalen Gltigkeitsbereichs gehoben. Sie knnen die Funktion verwenden, bevor Sie sie deklariert haben:
hoisted(); // Logs "foo"
function hoisted() {
console.log("foo");
}
Beachten Sie, dass Funktionsausdrcke nicht gehoben werden:
notHoisted(); // TypeError: notHoisted is not a function
var notHoisted = function () {
console.log("bar");
};
Ob function Deklarationen im gleichen Gltigkeitsbereich neu deklariert werden knnen, hngt davon ab, in welchem Gltigkeitsbereich sie enthalten sind.
Auf oberster Ebene eines Skripts verhalten sich function Deklarationen wie var und knnen durch eine andere function oder var neu deklariert werden, aber nicht durch let, const, oder class.
function a(b) {}
function a(b, c) {}
console.log(a.length); // 2
let a = 2; // SyntaxError: Identifier 'a' has already been declared
Wenn function Deklarationen durch var neu deklariert werden, berschreibt der Initialisierer der var Deklaration immer den Funktionswert, unabhngig von ihrer relativen Position. Dies liegt daran, dass Funktionsdeklarationen vor allen Initialisierern gehoben werden, sodass der Initialisierer spter kommt und den Wert berschreibt.
var a = 1;
function a() {}
console.log(a); // 1
Auf der obersten Ebene des Funktionsrumpfes verhlt sich function auch wie var und kann neu deklariert werden oder denselben Namen wie ein Parameter haben.
function foo(a) {
function a() {}
console.log(typeof a);
}
foo(2); // Logs "function"
Auf der obersten Ebene eines Moduls oder eines Blocks im strict mode verhalten sich function Deklarationen wie let und knnen durch keine andere Deklaration neu deklariert werden.
// Assuming current source is a module
function foo() {}
function foo() {} // SyntaxError: Identifier 'foo' has already been declared
"use strict";
{
function foo() {}
function foo() {} // SyntaxError: Identifier 'foo' has already been declared
}
Eine function Deklaration innerhalb eines catch Blocks kann nicht denselben Namen wie der catch-gebundene Bezeichner haben, selbst im Nicht-strict Mode.
try {
} catch (e) {
function e() {} // SyntaxError: Identifier 'e' has already been declared
}
Der folgende Code deklariert eine Funktion, die den Gesamtbetrag an Verkufen zurckgibt, wenn die Anzahl der verkauften Einheiten von drei Produkten angegeben ist.
function calcSales(unitsA, unitsB, unitsC) {
return unitsA * 79 + unitsB * 129 + unitsC * 699;
}
| Spezifikation |
|---|
| ECMAScript 2027 LanguageSpecification # sec-function-definitions |
Functionfunction Ausdruckfunction*async functionasync function*Der Bauplan fr ein besseres Internet.
Teile dieses Inhalts sind 19982026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfgbar unter einer Creative-Commons-Lizenz.
| Web Proxy Viewer | New URL | Original Page |