2016-04-05 13 views
-3
function getValue() { 
    console.log(1); 
    return 2; 
}; 

for (let i = 0; i < 1000; i++) { 
    getValue(); 
} 

Es wird 1 tausend Mal gedruckt, aber hier wird es nur einmal, dass zwei am Ende der Schleife zurückgeben. Warum?Warum gibt meine for-Schleife nur einmal einen Wert zurück?

+2

wie sagt man, dass es nur einmal zurückkommt –

+2

Es ist nicht klar, was Sie fragen. Sie tun nichts mit dem Rückgabewert von 'getValue()'; Das einzige, was diese Schleife macht, ist 1000 Mal "1" zu loggen. Du hast es nicht anders gemacht. –

+0

Works 1000 mal für mich: http://i.imgur.com/uc7WL9I.png –

Antwort

1

Es wird nicht einmal ausgeführt. Wahrscheinlich, was Sie sehen, ist dies:

enter image description here

die "1000" sehen? Das bedeutet, dass "1" 1000 mal ausgegeben wurde. Ihre Javascript-Konsole versucht einfach, Ihnen etwas Platz zu sparen. Wenn Sie die Nummer etwas ändern, das ist etwas anderes jedes Mal, wenn eindeutige Instanzen der Nachricht sehen werden:

enter image description here

Wenn Ihre Frage ist: „Warum sagt es‚1‘1000-mal, sondern nur‚2‘ein Single Time "dann ist die Antwort sehr einfach. Sie führen nur die Funktion aus, aber drucken nie den Rückgabewert. Daher wird der letzte Rückgabewert angezeigt. Wenn Sie auch 2 drucken möchten, verwenden Sie console.log(getValue());.

"Warum sollte ich jemals das Ergebnis des letzten Anrufs wollen?"

Weil Sachen wie das ist genial:

enter image description here

+0

meine Frage ist, warum 2 nur einmal und das auch am Ende und nicht 10 mal wie ich als die Funktion aufgerufen wurde dass es oft ja es läuft 10 mal aber Rückgabewert einmal –

+0

@Autif Weil Sie nie 'getValue' drucken - Sie rufen nur an.Warum willst du etwas drucken, von dem du nie erzählst, dass es gedruckt werden soll? Wenn Sie '2' (und nicht nur den letzten Rückgabewert) ausgeben wollen, verwenden Sie' console.log (getValue()) '. – h2ooooooo

+0

@Autif Siehe seine Erklärung Mann. –

0

vielleicht habe ich bekam, was Sie meinen ....

Sie sehen 1000 1, als 2, und Sie fragen sich, warum Sie nur eine 2 sehen?

Ihre Funktion gibt tatsächlich 2 für 1000 mal zurück, aber Ihr Code macht nichts damit, es ist "verloren" und die Konsole gibt Ihren letzten verwendbaren Rückgabewert aus, den 1000. 2 der getValue-Funktion.

wenn Sie eine neue Rückkehr nach der Schleife hinzufügen, werden Sie nicht die 2 sehen, und Sie werden diesen neuen Rückgabewert, wie diese:

function getValue() { 
    console.log(1); 
    return 2; 
}; 

for (let i = 0; i < 1000; i++) { 
    getValue(); 
}; 
var x=function(){ 
    return "return value string, that you see only once in the console"} 
x(); 
x(); 

wie Sie sehen können, rufen wir die x() Funktion zweimal, aber wir sehen die zurückgegebene Zeichenfolge nur einmal in der Konsole.

Verwandte Themen