Salve e scusate per il ritardo con cui rispondo.
Effettivamente questi sono gli effetti che si ottengono lavorando fino alle 4 di notte...
Se non chiamo dichiara() non mi cambierà mai la variabile.

Mi è bastato cambiare scrivi() da:

codice:
function scrivi() {
document.write(messaggio2);
}
a

codice:
function scrivi() {
dichiara();
document.write(messaggio2);
}
per avere un esempio funzionante.

Conoscendo poco javascript ero convinto di sbagliare qualcosa scrivendo il codice e sono stato ore su una decina di righe senza accorgermi di un errore così banale.

Grazie mille e scusate per il quesito a dir poco da principiante.