buenas...
la forma que ofrece @chwc es una alternativa pero no necesariamente tiene que hacerse mediante objetos. también puede hacerse mediante funciones locales. tu problema en particular es de scope de variables. consiste en definir la función dentro de otra función para que esa función interna tenga alcance —o visibilidad— a la función externa. sin embargo, no puedes hacerlo al revés. es decir, la función externa no puede accesar al scope de las funciones internas.
Código:
function foo(bar){
// los argumentos definidos son variables locales a esa función ;
function baz(){
console.log(bar); // variable de la función externa ;
}
baz(); // en algún punto de foo se invoca la función interna ;
}
para más detalles puedes buscar por
javascript scope chain.