Per quanto ne so, l'assegnazione di this
a una variabile viene utilizzata all'interno di callback in cui l'ambito this
può cambiare. Ma scavando attraverso la fonte ExtJS l'ho trovato usato in tutti i tipi di funzioni ma non sempre. Quindi c'è qualche ragione per cui assegnerei this
a una variabile locale al di sotto dell'ambito o la fonte ExtJS sta semplicemente lottando con diversi stili di sviluppo?Qual è il motivo dell'assegnazione di questa variabile locale senza una richiamata?
risposta
Ci sono alcuni motivi per questo, il più significativo è che l'utilizzo di una variabile locale salverà alcuni byte durante la compressione dei file. Potrebbe non sembrare molto per un piccolo pezzetto di codice, ma può aumentare un po 'nel tempo.
C'è una lunga discussione nei forum Sencha che parla proprio di questo problema: http://www.sencha.com/forum/showthread.php?132045.
Come hai affermato correttamente, this
viene talvolta utilizzato in luoghi in cui l'oscilloscopio potrebbe cambiare.
In alcuni casi si desidera fare lo stesso per assicurarsi che non vi siano problemi di ambito.
Oltre a ciò, gli sviluppatori a volte assegnano solo this
a una variabile per abitudine più che per necessità.
@kevhender mi ha indicato a destra sencha forum thread dove evan ha dato una spiegazione molto buona.
È solo per le dimensioni. Ed ecco un esempio:
function doA() {
var me = this;
me.a();
me.b();
me.c();
me.d();
me.e();
me.f();
me.g();
me.h();
me.i();
me.j();
me.k();
me.l();
}
function doB() {
this.a();
this.b();
this.c();
this.d();
this.e();
this.f();
this.g();
this.h();
this.i();
this.j();
this.k();
this.l();
}
compressa otteniamo:
function doA(){var a=this;a.a();a.b();a.c();a.d();a.e();a.f();a.g();a.h();a.i();a.j();a.k();a.l()}
function doB(){this.a();this.b();this.c();this.d();this.e();this.f();this.g();this.h();this.i();this.j();this.k();this.l()};
Tutto fa brodo.
Secondo che dovremmo
NON utilizzare un var locale se usiamo questo solo fino a tre volte
function doA(){var a=this;a.a();a.b();a.c();}; function doB(){this.a();this.b();this.c();};
e usarlo se noi utilizzare questo più spesso poi tre volte
function doA(){var a=this;a.a();a.b();a.c();a.d()}; function doB(){this.a();this.b();this.c();this.d()};
- 1. Qual è il collegamento IntelliJ per creare una variabile locale?
- 2. Qual è il motivo dell'errore "Uso della variabile locale non assegnata"?
- 3. Qual è il significato della variabile locale nasconde un campo?
- 4. Perché python pensa che questa sia una variabile locale?
- 5. Ottieni il nome di una variabile locale
- 6. Qual è il punto di utilizzo di una variabile locale non statica in un blocco?
- 7. Qual è la differenza tra una variabile membro e una variabile locale?
- 8. Dichiarazione di una variabile locale inutile
- 9. Qual è il significato di questa sintassi?
- 10. Qual è il modo più semplice per definire una variabile locale in Oracle?
- 11. Qual è il motivo dell'utilizzo; in F # elenca invece di?
- 12. Qual è il punto di avere una variabile globale in un bean di sessione senza stato?
- 13. Qual è il motivo dell'utilizzo di tale sintassi (0, _.Em)();
- 14. Qual è il problema in questa affermazione?
- 15. Qual è il motivo del metodo size() di BitSet?
- 16. Qual è il motivo della creazione di IEnumerator?
- 17. come rendere locale una variabile
- 18. variabile locale Rubino è indefinito
- 19. Qual è il motivo dell'uso della variabile auto self (shared_from_this()) nella funzione lambda?
- 20. Qual è il significato di -2 in questa istruzione IL?
- 21. Qual è il significato di questa definizione di funzione?
- 22. Maven non sostituisce una variabile in 'settings.xml' quando viene richiamata
- 23. Qual è il vantaggio di questa chiamata di funzione indiretta?
- 24. Per creare una variabile persistente è meglio avere una variabile statica locale o globale?
- 25. Qual è l'ambito di una variabile all'interno di una vista?
- 26. È OK avere una variabile locale thread con lo stesso nome di una variabile locale non thread?
- 27. Come si controlla il tipo di una variabile locale?
- 28. Qual è il significato di questa icona di Eclipse?
- 29. Esiste già una funzione come questa? (Oppure, qual è il nome migliore per questa funzione?)
- 30. Qual è il caso d'uso di questa idiosincrasia ereditaria?
Grazie, mi hai indicato la giusta direzione, quindi accettato e +1. Ad ogni modo ho sentito di scrivere una risposta più complessa e ho aggiunto questo alla mia domanda. – JJR