Il tuo suggerimento, di sovrascrivere assegnando un nuovo valore alla variabile, non funzionerà (almeno non su eventuali implementazioni JS in uso nei browser comuni). Le stringhe JavaScript sono immutabili, il che significa che quando assegni un nuovo valore a una variabile stringa, una nuova stringa viene creata da qualche parte nell'heap. Non sovrascrive quello vecchio. Inserirlo in un oggetto, ad esempio nel secondo esempio, non lo modifica.
Il garbage collector in JavaScript è astratto e non ci sono API per interagire con esso. Quindi non puoi controllare direttamente ciò che fa o dire di cancellare un valore dalla memoria in una volta.
Potrebbe esserci qualche trucco intelligente / brutto trucco che puoi provare ad influenzare il comportamento del GC, ma dubito che ne varrà la pena. Ti consiglierei di pensare a quale minaccia stai cercando di difendere, e considera se è davvero un problema per te che la password rimanga in memoria.
Modifica: poiché dandavis evidenzia correttamente nei commenti, ci sono tipi JavaScript che può essere sovrascritto, ad es matrici digitate. Tuttavia, è ancora necessario ottenere i dati sensibili in uno di quelli senza che siano memorizzati in una variabile "ordinaria". Se lo copi solo da input.value
non hai guadagnato nulla. Non so come farlo, e onestamente, non mi preoccuperei di provarci.