Qual è il punto di inizializzazione di una variabile con lo stesso valore due volte? [chiuso]

5

Stavo leggendo " Pattern del modulo JavaScript: approfondimento di Ben Cherry. ", e aveva un codice di esempio che non capivo bene. Sotto l'intestazione Stato file incrociato , c'è un codice di esempio che ha il seguente:

var _private = my._private = my._private || {}

Questo non sembra essere diverso dalla scrittura di qualcosa del genere:

var _private = my._private || {}

Cosa sta succedendo qui e in che modo queste due dichiarazioni sono diverse?

    
posta JoeM05 29.11.2011 - 20:11
fonte

1 risposta

12
var _private = my._private = my._private || {}

Questa riga significa utilizzare my._private se esiste, altrimenti creare un nuovo oggetto e impostarlo su my._private .

Più di un'espressione di assegnazione può essere usata in una dichiarazione. L'operatore di assegnazione utilizza (consuma) qualsiasi cosa sia a destra di esso e produce quel valore come output a sinistra della variabile assegnata. Quindi, in questo caso, con parentesi per chiarezza, quanto sopra è equivalente a var _private = (my._private = (my._private || {}))

Questo caso è un tipo di inizializzazione pigra . Una versione meno concisa sarebbe:

if (!my._private) {
    my._private = {};
}
var _private = my._private;

In questo caso, sembra che l'inizializzazione pigra sia più utilizzata per qualsiasi inizializzazione della pigrizia. In altre parole, tutte le funzioni possono includere questa linea per creare o utilizzare in modo sicuro my._private senza eliminare la var esistente.

    
risposta data 29.11.2011 - 20:18
fonte

Leggi altre domande sui tag