2017-04-04 2 views
-1

Ich versuche herauszufinden, warum diese Rekursionsfunktion undefiniert sagt.Rekursionsfunktion sagt undefined

function countDown(num) { 
    if (num === 0) { 
     return; 
    } 
    countDown(num - 1); 
} 

console.log(countDown(10)); 
+0

Sie nie 'return' einen beliebigen Wert * * aus Ihrer Funktion. –

+1

Was erwarten Sie * erwarten * es zurückzukehren? Null? – Pointy

Antwort

1

A "nackte" return Aussage ist das Gleiche wie

return undefined; 

Im anderen Fall Ihre Funktion überhaupt keine return hat, so auch das ist wie

return undefined; 

So In allen Fällen gibt Ihre Funktion undefined zurück.

1

Es wird kein Wert zurückgegeben; daher gibt es undefined zurück.

function foo() { 
 
    return; 
 
} 
 

 
console.log(foo()); 
 

 
function bar() {} 
 

 
console.log(bar());

1

Wenn num ist 0 dann treffen Sie eine return Aussage mit nichts nach ihm, so liefert die Funktion undefined.

Wenn num ein anderer Wert ist, dann treffen Sie überhaupt keine return-Anweisung, daher gibt die Funktion immer noch undefined zurück.

In diesem speziellen Beispiel sehen Sie den Rückgabewert nur, wenn Sie num10 sind. Das ist "jeder andere Wert".

1

Es gibt undefined zurück, weil Sie nichts zurückgeben. Um das Ergebnis sehen zu können, z.B. Protokollieren Sie den Wert num mit jedem Zyklus oder geben Sie am Ende stop Zeichenfolge zurück.

function countDown(num) { 
 
    console.log(num); 
 
    if (num === 0) { 
 
    return 'stop'; 
 
    } 
 
    return countDown(num - 1); 
 
} 
 

 
console.log(countDown(4));

Verwandte Themen