¿Por qué el valor de retorno de la función no está definido cuando se devuelve en un bucle?

No puedo entender por qué esto está sucediendo.

La siguiente función siempre devuelve indefinido. Incluso cuando se cumple la condición y se debe devolver un valor.

Aquí hay una instancia de la variable 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;
            }
        });
    }

Sin embargo, si configuro una variable dentro del bucle, luego la devuelvo una vez que el bucle termina de ejecutarse, se devuelve el valor correcto.

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

¿Alguna idea sobre por qué no puedo devolver un valor desde dentro del bucle?

Respuestas a la pregunta(8)

Su respuesta a la pregunta