Por que o valor de retorno da função é indefinido quando retornado em um loop?

Eu não consigo entender porque isso está acontecendo.

A função a seguir sempre retorna indefinida. Mesmo quando a condição é satisfeita e um valor deve ser retornado.

Aqui está uma instância da variável answerCollection.

[
Object
Answer: "2"
AnswerText: undefined
OpsID: "24"
PprID: "2"
Question: "How many colors?"
__proto__: Object
]

.

function GetAnswerForProcessQuestion(pprID)
    {
        $.each(answerCollection, function (index, item)
        {
            var thisPprID = item["PprID"];
            if (thisPprID == pprID)
            {
                var answer = item["Answer"];
                return answer;
            }
        });
    }

No entanto, se eu definir uma variável dentro do loop, em seguida, retornar essa variável, uma vez que o loop termina a execução, o valor correto é retornado.

function GetAnswerForProcessQuestion(pprID)
    {
        var answer;
        $.each(answerCollection, function (index, item)
        {
            var thisPprID = item["PprID"];
            if (thisPprID == pprID)
            {
                answer = item["Answer"];
            }
        });
        return answer;
    }

Alguma idéia de por que não posso retornar um valor de dentro do loop?

questionAnswers(8)

yourAnswerToTheQuestion