2017-09-04 3 views
1

Versuchen Sie, diese Rahmenübung zu verstehen, dass ich auf diese site's exercise stieß. Wie genau wird function doMultiplication innerhalb function writeIt aufgerufen? Jedes Mal, wenn ich versuche, diese scheinbar einfache Übung herauszufinden, werde ich schielen. Kannst du es erklären, um zu erklären, wie es funktioniert? Danke im Voraus.Wie funktioniert diese Funktion genau?

function writeIt(numTimes, multiple) { 
 
    function doMultiplication(val, multiple) { 
 
    i = val * multiple; 
 
    return i; 
 
    } 
 

 
    for (let i = 0; i < numTimes; i++) { 
 
    document.write(doMultiplication(i, multiple) + ' '); 
 
    } 
 
} 
 

 
writeIt(5, 2);

EDIT - hier ist mein Verständnis von dem, was vor sich geht, so kann geklärt werden, was ich hier nicht zu verstehen ...

Also, mit dem WriteIt (5, 2) Funktion, es bedeutet, dass 2 zu val multipliziert wird? Aber was ist val hier?

Ich bekomme die für die Gleichung, und wie numTimes ist 5 ... Ich denke, ich bin durch den Val Teil abgeworfen?

+0

was meinst du, wie? Es ist in document.write() – lascort

+0

@lascort, schrieb in einer Bearbeitung, eine ungeschickte Art zu versuchen, mein Missverständnis zu erklären ... – user273072545345

+0

Val ist ich. Nicht sicher, was die Frage ist – Vatsal

Antwort

1

Auf Aufruf writeIt(5,2); folgende Dinge passieren -

writeIt(5,2) hier numTimes = 5 & multiple = 2.

nun nach Funktionsdeklaration geht es weiter zu for Schleife -

for (let i = 0; i < numTimes; i++) { 
    document.write(doMultiplication(i, multiple) + ' '); 
} 

TO -

for (let i = 0; i < 5; i++) { 
    //document.write(doMultiplication(0, 2) + ' '); 
    //document.write(doMultiplication(1, 2) + ' '); 
    //document.write(doMultiplication(2, 2) + ' '); 
    //document.write(doMultiplication(3, 2) + ' '); 
    //document.write(doMultiplication(4, 2) + ' '); 
} 

Jetzt bewegen wir uns -

function doMultiplication(val, multiple) { 
    i = val * multiple; 
    return i; 
} 

, die von der for-Schleife aufgerufen wird -

//document.write(doMultiplication(0, 2) + ' '); 

Also doMultiplication (0, 2) => 0 * 2 => return 0; => 0 + '';

//document.write(doMultiplication(1, 2) + ' '); 

Also doMultiplication (1, 2) => 1 * 2 => zurück 2; => 2 + '';

Also doMultiplication (2, 2) => 2 * 2 => zurück 4; => 4 + '';

//document.write(doMultiplication(3, 2) + ' '); 

So doMultiplication (3, 2) => 3 * 2 => Rück 6; => 6 + '';

Also doMultiplication (4, 2) => 4 * 2 => zurück 8; => 8 + '';

1

writeIt() braucht zwei Parameter - 5 entspricht, wie oft die Funktion ausgeführt werden sollte, und 2 entspricht dem Vielfachen. Im Wesentlichen werden Sie die Vielfachen von 2 fünf Mal auflisten.

function doMultiplication(val, multiple) ist ein nested function - es dauert die gleichen multiple Parameter als writeIt(), zusammen mit den von der ifor Schleife. Im Wesentlichen multipliziert diese Funktion die Zielnummer mit dem Index, der von der nächsten for-Schleife übergeben wird.

Als nächstes ist for (let i = 0; i < numTimes; i++). let ist das ES6-Äquivalent von var (aber mit umschließendem Block-Level-Bereich); Es richtet einfach eine neue Variable ein. Diese Variable i beginnt bei 0 und wird so lange durchlaufen, bis sie der Anzahl entspricht, mit der die Funktion ausgeführt werden soll (5). Für jede der Iterationen dieser Schleifen wird die doMultiplication()-Funktion ausgeführt, wobei der Index als der zu multiplizierende Wert übergeben wird. Die Ausgabe wird mit document.write() auf die Seite geschrieben.

Schließlich writeIt(5, 2); einfach Anrufe die writeIt() Funktion, und übergibt in den beiden Parametern. Da es nicht innerhalb einer Funktion selbst liegt, wird es ausgeführt, sobald die Seite geladen ist.

Der Ausgang ist 0 2 4 6 8 weil die i der for Schleife bei 0 beginnt, so dass das, wo Sie anfangen zu multiplizieren.

Hoffe, das hilft! :)

+0

Nur hinzuzufügen, lassen Sie ist nicht nur ein Äquivalent, da es Ihnen das Block-Scoping gibt, das eine wichtige Unterscheidung zu betrachten ist – Vatsal

+0

Yep; Ich aktualisierte meine Antwort, um anzugeben, dass es umschließenden Block-Level-Bereich gibt :) –

+0

@ObsidianAge, danke für den geschachtelten Funktionslink, und Ihre Erklärung! Ich schätze es, dass Sie sich die Zeit genommen haben, es zu erklären. – user273072545345

1

Ich bin mir immer noch nicht sicher über Ihre Frage. Aber ich werde versuchen, mein Bestes zu geben. Val ist, was von for Schleife ie i übergeben wird. Also (val = i). Es kann besser angesehen werden, indem man Konsolenanweisungen ausdruckt, anstatt sie nur im Browser zu schreiben. Kann unter Schnipsel seine

function writeIt(numTimes, multiple) { 
    function doMultiplication(val, multiple) { 
    console.log('val is ', val); 
    const i = val * multiple; 
    console.info ('i after manipulation ', i); 
    return i; 
    } 

    for (let i = 0; i < numTimes; i++) { 
    console.log('i is ', i); 
    console.log(doMultiplication(i, multiple) + ' '); 
    } 
} 

writeIt(5, 2); 

Eine weitere Sache helfen, sollten Sie wahrscheinlich tun ist i ein Block scoped variabel zu machen, anstatt nur eine globale Variable mit.

Hoffe, das hilft.

Glückliches Lernen

Vatsal

+0

danke für die console.log anzeigen. Es war interessant, das anzusehen! Schätze, dass du dir die Zeit nimmst, es zu erklären. – user273072545345

Verwandte Themen