JavaScript Função aninhada

Recebi um código para javascript que simplesmente não entendo:

function dmy(d) {
    function pad2(n) {
        return (n < 10) ? '0' + n : n;
    }

    return pad2(d.getUTCDate()) + '/' +
       pad2(d.getUTCMonth() + 1) + '/' +
       d.getUTCFullYear();
}

function outerFunc(base) {
    var punc = "!";

    //inner function
    function returnString(ext) {
       return base + ext + punc;
    }

    return returnString;
}

Como uma função pode ser definida dentro de outra função? Podemos chamar pad2 () de fora da minha função ()?

Por favor, coloque alguma luz nele. Obrigad

questionAnswers(6)

yourAnswerToTheQuestion