2016-10-30 4 views
2

Ich sah ein paar Dinge in Javascript. Als ich auf den Anruf() Funktion bekam hatte ich einen Blick auf diese auf der mozilla js developer page:So erklären Sie Javascript Syntax

Syntax:

fun.call(thisArg[, arg1[, arg2[, ...]]]) 

Ich verstehe, was die Funktion tut und wie funktioniert es aber, was auf der Erde ist, dass Syntax versucht zu sagen? Warum gibt es ein Komma direkt nach dieser Klammer?

[,

ähnlicher, als ich die Verringerung() Funktion aufzublicken Ich verstehe, wie es aber die Syntax funktioniert zeigt dies:

arr.reduce(callback[, initialValue]) 

Sollte dies nicht so etwas wie arr.reduce sein (Rückruf , Anfangswert) statt?

Wie ein Noob, die Syntax führt mich zu der Annahme, dass Callback ein Array ist und es hat ein leeres erstes Element und ein zweites Element namens initialValue. Gibt es irgendwo, dass ich über diese Syntax lesen kann, so dass es Sinn macht, oder könnte eine freundliche Person mir bitte etwas Klarheit geben?

EDIT: Auch Rückruf bezieht sich auf eine Funktion ja? Warum ist es Callback [] und nicht Callback()?

Antwort

5

[...] zeigt an, dass das Innere optional ist. Zum Beispiel kann arr.reduce(callback[, initialValue]) entweder arr.reduce(callback) oder arr.reduce(callback, initialValue) sein.

Das Komma ist genau dort, was bedeutet, dass wenn Sie das zweite Argument einschließen, müssen Sie das Komma setzen.

+0

Vielen Dank für die Antwort. Wenn Sie sich das zweite Beispiel ansehen, das ich zur Verfügung gestellt habe, gibt es kein [...].Wie soll ich also wissen, dass eines der Argumente optional ist? – yoonsi

+0

Bedeutet es, dass das Element nach dem Komma (initialValue) optional ist und dass ich das Komma angeben muss, wenn ich dieses Argument verwende? Das würde Sinn machen. Ich wundere mich jedoch, warum Rückruf ist Callback [] und nicht Callback() – yoonsi

+2

Nur zur Klarheit - es ist nicht eine JS-Syntax, es ist nur eine Dokumentation Syntax. –

2

Das ist eine Dokumentationskonvention und keine tatsächliche JS-Syntax.

Eckige Klammern zeigen an, dass das Argument optional ist.

Die Ellipse zeigt an, dass eine beliebige Anzahl der Argumente dorthin gehen kann.

fun.call(thisArg[, arg1[, arg2[, ...]]]) 

bedeutet, man könnte sagen:

fun.call(foo); 
fun.call(foo, 1); 
fun.call(foo, 1, 2); 
fun.call(foo, 1, 2, 3); 
fun.call(foo, 1, 2, 3, 4); 
fun.call(foo, 1, 2, 3, 4, 5); 

etc

arr.reduce(callback[, initialValue]) 

bedeutet, dass Sie dsay coul:

arr.reduce(foo); 

oder

arr.reduce(foo, bar); 

... aber nicht

arr.reduce(foo, bar, baz);