Encuentre el valor en la matriz y luego devuelva verdadero con Angular forEach

Estoy aprendiendo JavaScript y AngularJS.

¿Cuál es la diferencia entre este código?

function isInArrayNgForeach(field, arr) {
    angular.forEach(arr, function(value, key) {
        if(field == value)
            return true;
    });
    return false;
} // This returns always false

function isInArrayJavaScript(field, arr) {
    for(var i = 0; i < arr.length; i++) {
        if(field == arr[i])
            return true;
    }
    return false;
} // This works fine

function isInArray() {
    var testArr = ['stack', 'over', 'flow'];
    console.log(isInArrayNgForeach('stack', testArr)); // return false
    console.log(isInArrayJavaScript('stack', testArr)); // return true
}

Mi pregunta es: ¿por qué?isInArrayNgForeach siempre regresofalso? Supongo que porque hay una función dentro de la función, pero no estoy seguro de por qué.

Respuestas a la pregunta(4)

Su respuesta a la pregunta