Ich bin neu in der Welt von Javascript und bastele am Schreiben sehr grundlegender Funktionen. Ich bin versehentlich auf das folgende Beispiel gestoßen und bin mir nicht sicher, warum es funktioniert, wenn ich keinen Parameter übergebe, wenn die Funktion dies erfordert.
Beispielfunktion
function myfunction(x) {
alert("This is a sample alert");
}
Wenn ich jetzt die Funktion myfunction();
aufrufe, wird mir die Warnung angezeigt. Warum kann ich die Funktion ohne Fehler oder Warnungen aufrufen, wenn ich keinen Parameter übergeben habe?
BEARBEITEN
Ich habe nicht so viele großartige Antworten erwartet und bin noch keineswegs in der Lage zu sagen, welche Antwort die beste ist. Daher kann ich die Leute bitten, die beste Antwort vorzuschlagen, und ich werde dieser Person die Akzeptanz verleihen.
javascript
overloading
PeanutsMonkey
quelle
quelle
function foo(x){...}
undfunction foo(x,y,z){...}
man kann nur eine Funktion für jeden Namen haben.function overloading
in js haben, Sie haben aber andere Möglichkeiten, es zu verspotten.Antworten:
Es wird nichts passieren - das heißt, Sie erhalten keinen Fehler oder eine Warnung, da die Übergabe der Parameter in Javascript optional ist.
Alle Parameter, die nicht "angegeben" wurden, haben den
undefined
Wert .Innerhalb der
foo
Funktion jetzt:Sie können sogar weitere Argumente übergeben, z.
Sie können die Anzahl der
arguments.length
von der Funktion gelieferten Parameter innerhalb der Funktion ermitteln.Beispiel für eine nützliche Funktion, die eine beliebige Anzahl von Parametern verarbeitet:
quelle
function myfunction (a,b){}
myfunction (1,2,3,4,5) habe und diese übergeben habe, gehe ich davon aus, dass sie noch gültig ist? Ist die Erwartung, dass es eine Warnung oder einen Fehler geben wird?console.log
sowie die Argumente zu erläutern .alert
.return
er ignoriert wurde. 2. Sie erhalten keine Fehler oder Warnungen. Siehe diese DEMOAlle Argumente in JavaScript-Funktionen sind optional (lesen Sie "lose eingegeben").
Sie können auf die Argumente einer Funktion innerhalb der Funktion verweisen, indem Sie die benannten Argumentvariablen oder das Argumentobjekt verwenden. Dieses Objekt enthält einen Eintrag für jedes an die Funktion übergebene Argument. Der Index des ersten Eintrags beginnt bei 0. Wenn einer Funktion beispielsweise drei Argumente übergeben werden, können Sie auf das Argument wie folgt verweisen:
quelle
So funktioniert JavaScript. Parameter sind optional und haben den nicht wirklich wertvollen Wert "undefined" in der Funktion, wenn sie in einem Funktionsaufruf fehlen.
Mit "optional" meine ich genau das: Das Aufrufen einer Funktion beinhaltet eine beliebig lange Liste von Parametern. Es braucht keine Beziehung zwischen der Anzahl von Parametern zu sein geben zu einer Funktion und die Zahl erklärt . Der beste Weg, um an diese Erklärung zu denken, dann:
ist, dass Sie eine Funktion deklarieren und den Namen "a" an den ersten Parameter, "b" an den zweiten und "c" an den dritten Parameter binden. Es ist jedoch keineswegs garantiert, dass dies tatsächlich der Fall ist einer dieser Werte bei einem späteren Aufruf der Funktion an einen Wert gebunden wird.
Aus dem gleichen Grund können Sie eine Funktion ohne Parameter definieren und diese dann über das
arguments
Objekt "finden" :Das ist also nicht ganz das Gleiche wie die erste Funktion, aber es ist in den meisten Punkten nah, die praktisch zählen.
Der "undefinierte" Wert in JavaScript ist ein Wert, aber seine Semantik ist in Bezug auf Sprachen ungewöhnlich. Insbesondere ist es nicht genau das gleiche wie der
null
Wert. Außerdem ist "undefiniert" selbst kein Schlüsselwort. Es ist nur ein semi-spezieller Variablenname!quelle
optional
"nicht wirklich ein Wert" verstehenundefined
?undefined
.undefined
.JavaScript hat keine Standardwerte für Funktionsparameter wie andere Sprachen. Sie können also so viele oder so wenig Argumente übergeben, wie Sie möchten.
Wenn Sie keinen Wert übergeben, lautet der Parameter
undefined
.Wenn Sie mehr Parameter als in der Signatur übergeben, können Sie verwenden
arguments
.quelle
undefined
logs
? Wo protokolliert es es?F12
oderCtrl+Shift+J
, um darauf zuzugreifen.Sie können auch mehr Argumente als nur das in der Funktion erwähnte angeben
Sie können die
arguments
Eigenschaft eines Arrays verwenden, um die angegebenen Argumente anzuzeigen.quelle
Weil es keinen Fehler gibt, bis die Funktion erwartet, mit dem Parameter arbeiten zu können, den Sie übergeben sollen.
Beispielsweise:
Würde einen Fehler werfen; wenn auch wahrscheinlich nur ein
NaN
(in diesem Fall) oder einvariable is undefined
.quelle
function myfunction(a,b) { var calc = a+b; return;}
und dann die Funktiondocument.write(myfunction(1.2));
aufrufe, warum erhalte ich dann immer noch den Wert vonundefined
, obwohl ich einen Parameter übergebe?return calc;
oderreturn a+b;
(natürlich als letzte Zeile; und letzterereturn
anstelle vonvar calc
).return a+b;
?return
hier .Wenn Sie das Argument weglassen, ist sein Wert
undefined
. Auf diese Weise können Sie ganz einfach optionale Parameter erstellen.Ein weiteres Merkmal ist die Möglichkeit, eine Funktion ohne Parameter zu definieren und sie mit Argumenten erfolgreich aufzurufen, wobei das
arguments
Objekt verwendet wird. Auf diese Weise können Sie auf einfache Weise Argumentarrays mit variabler Länge erstellen.quelle
In javascript console.log gibt innerhalb einer Funktion undefined als Ausgabe für nicht übergebene Parameter aus, aber außerhalb der Funktion gibt es keinen definierten Fehler, da innerhalb einer Funktion Browser die Variable explizit deklarieren. Zum Beispiel
gibt VM1533: 1 Ungefangener Referenzfehler: x ist nicht definiert, wohingegen
gibt undefiniert. Dies liegt daran, dass der Funktionstest () vom Browser wie folgt umgeschrieben wird:
Ein anderes Beispiel : -
ist immer noch undefiniert, wenn die Funktion wird
Die Warnung im folgenden Beispiel gibt undefiniert: -
Die obige Funktion wird: -
Der Bereich der Javascript-Variablen innerhalb einer Funktion ist der Bereich der Funktionsebene und nicht die Blockebene. Zum Beispiel
gibt die Ausgabe aus als:
Wieder ist die Funktion wie folgt geworden:
quelle