Tu problema es que intentas acceder justo después del fetch, es decir
var bdresultados
fetch(...)
.then(...)
// bdresultados probablemente todavía no se haya inicializado
// esto se ejecutará inmediatamente sin esperar al fetch
console.log(bdresultados) // undefined
No puedes hacer eso. fetch es una operación asíncrona, el console.log se ejecutará inmediatamente después, sin que el then todavía se haya ejecutado y por tanto a bdresultados todavía no se habrá asignado nada.
Necesitas esperar a que la promesa del fetch se complete (se ejecute el then()). Tienes algunas alternativas. Lo más recomendable es que proceses la info dentro del then o que este llame a alguna función que continue el tratamiento, no puedes simplemente bloquear el código. Puedes hacer algo así:
function miFuncionParaTratarLaRespuesta(bdresultados) {
console.log(bdresultados);
}
var bdresultados // NOTA: ya no necesitas esta variable en realidad
if(respuesta.context.bueno){
fetch('/bd/')
.then(response => response.json())
.then(data => {
for(let indice of data){
bdresultados = indice.Personas;
}
miFuncionParaTratarLaRespuesta(bdresultados)
})
.catch(err => {});
}
Si todo tu contexto está bajo async (que lo dudo), la forma más simple es establecer un await delante del fetch para volverlo síncrono (el console.log del ejemplo no se ejecutará hasta que el fetch termine). EDITO: borro el ejemplo de async/await para no liar, dado que requiere más elaboración y es más complejo de lo que necesitas.
NOTA
Creo que el for que tienes es un tanto inútil, sólo estás quedándote con el último valor iterado, pero eso es otro problema.