Ciao, se parliamo di normali pagine HTML, normalmente le variabili globali sono dichiarate e disponibili nell'oggetto principale window (lasciando da parte i casi in cui siano dichiarate usando i nuovi standard ES6: let, const, class, ecc.); per cui puoi tranquillamente dichiararle sul livello principale usando l'identificatore var oppure definirle come attributo dell'oggetto window.
Che io sappia è sempre stato così e penso che continuerà ad esserlo a prescindere dall'integrazione di altri eventuali futuri standard; per cui non riesco a comprendere il reale motivo delle tue perplessità. 
Ovviamente valgono sempre quelle regole relative al namespace e allo scope di ciascuna variabile; quindi al fatto che non dovrai usare nomi riservati o che possano creare conflitto con altre variabili di eventuali script coesistenti.
Per limitare possibili conflitti puoi adoperare diverse buone pratiche, ad esempio:
- usare nomi che siano difficilmente utilizzabili da altri possibili script; che so, magari mettendo anche un prefisso relativo a quel particolare script/applicazione/libreria/contesto per il quale stai dichiarando tale variabile; giusto per fare un esempio, potresti nominare una variabile come gestionaleRobynosse_nomeUtente e capisci bene che è più "specifica" ed è difficile che possa risultare utilizzata da altri script, rispetto magari ad una variabile come nomeUtente.
- usare sempre il riferimento all'oggetto window. Sebbene sia possibile riferirsi ad una variabile globale, da un qualsiasi punto dello script, semplicemente identificandola col proprio nome (ad esempio scrivendo gestionaleRobynosse_nomeUtente), risulta sempre più sicuro "passare" dall'oggetto window, cioè window.gestionaleRobynosse_nomeUtente; in questo modo, anche se dovesse esistere nell'ipotesi più remota, una variabile con lo stesso nome dentro un qualche altro scope locale, tu sei sicuro comunque di riferirti sempre a quella variabile dichiarata nello scope globale.
- se devi dichiarare più di una variabile potrebbe essere utile racchiuderle dentro un oggetto che dichiarerai a livello globale, ed essere sicuro quindi di utilizzare quelle specifiche variabili (proprietà del tuo oggetto) quando vai a richiamarle da dentro altri script/scope.
Ad esempio potresti dichiarare l'oggetto in questo modo:
codice:
window.gestionaleRobynosse = {
nomeUtente: 'Pippo',
anagraficaClienti: [],
anagraficaFornitori: [],
fattureAcquisto: [],
fattureVendita: []
}
e in tal caso, in qualsiasi punto del tuo script, puoi riferirti in modo sicuro a window.gestionaleRobynosse.nomeUtente e a qualsiasi proprietà del tuo oggetto.
Potrebbero esserci altri svariati accorgimenti da utilizzare (anche relativi ad un più specifico approccio alla programmazione orientata agli oggetti) ma al momento questo è ciò che mi viene in mente per quanto hai richiesto.
Vorrei evitare di mettere un campo input hidden da identificare con un id per poi leggere il suo valore.
A meno che tu non debba usare questo dentro un form per poterne passare il valore al submit, non vedo perché vorresti fare una cosa del genere? 
Fai sapere se ho centrato il punto o diversamente fornisci maggiori dettagli.
Buon proseguimento