How do I fix the undefined result I keep getting from this?

So I’m doing the HackerRank superDigit challenge and even though I have the correct value for all the informal test cases, the Output box says that the result is undefined. I’m not really getting what undefined is all about or how a variable with a value returns as undefined.

function superDigit(n, k) {
    // Write your code here

    var nArr = [];
    
    for(let i = 0; i < n.length; i++)
    {
        nArr.push(n[i]);
    }
    
    console.log('nArr: ' + nArr);
    
    var nComb = 0;
    for(let i = 0; i < nArr.length; i++)
    {
        nComb += parseInt(nArr[i]);
    }
    console.log('nComb: ' + nComb);
    
    var nMult = nComb *= k;
    console.log('nMult: ' + nMult);
    console.log('');
    
    if(nMult < 10)
    {
        return nMult;
    }
    else
    {
        superDigit(nMult.toString(),1);
    }
}

Answer

You probably want to return the superDigit result as well. So when calling superDigit recursively, add the return statement. I also cleaned up the console.log calls a bit so its more readable to me.

function superDigit(n, k) {

    var nArr = [];
    
    for(let i = 0; i < n.length; i++)
    {
        nArr.push(n[i]);
    }
    
    var nComb = 0;
    for(let i = 0; i < nArr.length; i++)
    {
        nComb += parseInt(nArr[i]);
    }
    
    var nMult = nComb *= k;
    console.log('nMult:', nMult, 'nArr:', nArr, 'nComb:', nComb);
    
    if(nMult < 10)
    {
        return nMult;
    }
    else
    {
        return superDigit(nMult.toString(),1);
    }
}

document.getElementById('result').innerText = superDigit("200", 20);
<html>
<body>
<p id="result"></p>
</body>
</html>