¿Cómo contar las vocales en una cadena Javascript con dos funciones?

Estoy tratando de escribir una función Javascript que cuente las vocales en una cadena llamando a otra función dentro de esa función, pero cuando la pruebo en la consola, devuelve 0.

Aquí está mi primera función que funciona bien y reconoce si una cadena es una vocal:

function isVowel(ch){
    var pattern = /[aeiouAEIOU]/
    return pattern.test(ch);
};

Para la segunda función, ninguna de mis ideas ha funcionado. Aquí hay algunos ejemplos de lo que he probado hasta ahora:

Este me devuelve un 0:

function countVowels(str){
var count = 0;

for(var i; i <= str.length; ++i){
    if(isVowel(i)){
        ++count;
    }
}
return count;
};

También probé lo anterior, pero eliminando .length después de str en el área for ().

Otro ejemplo, pero este me da un error:

function countVowels(str){
var count = 0
var pattern = /[aeiouAEIOU]/

for(var i = 1; i <= str.length(pattern); ++i){
    if(isVowel(i)){
        ++count;
    }
}
return count;
};

También probé varias otras funciones, pero por mantener esta publicación relativamente corta no continuaré publicándolas. Soy bastante nuevo en Javascript y no estoy seguro de lo que estoy haciendo mal. Cualquier ayuda sería muy apreciada!

Respuestas a la pregunta(5)

Su respuesta a la pregunta