Warum gibt diese rekursive Funktion undefiniert zurück?

Ich versuche, eine Funktion zu schreiben, die zwei Zeichenfolgen mithilfe von Rekursion kombiniert. Mein Code ist unten, aber ich weiß nicht, warum die Funktion undefined zurückgibt, besonders wenn ich console.log im Basisfall habe und nicht undefined drucke, sondern stattdessen den korrekten Wert.

var str3=""
function merge(str1,str2){
    if(str1.length==0||str2.length==0){
        console.log(str3)
        return str3;
    }
    else{
        str3=str3+str1.substring(0,1)+str2.substring(0,1);
        merge(str1.substring(1,str1.length),str2.substring(1,str2.length))
    }
}

merge("AAA","BBB") //--> returns undefined but the console.log(str3) gives correct answer

Antworten auf die Frage(4)

Ihre Antwort auf die Frage