Come evitare di spararti ai piedi quando usi la chiusura in JavaScript

3

La funzione di chiusura è ampiamente utilizzata in JavaScript e rende piuttosto difficile per il programmatore che è stato utilizzato per programmare in un linguaggio senza chiusura. Quindi qual è la migliore pratica sull'uso della chiusura e su come evitare di spararti ai piedi.

    
posta xiao 28.04.2011 - 15:07
fonte

3 risposte

5

Secondo me, il modo migliore per evitare di spararti al piede con una bella funzione del linguaggio è non usarlo se non ne hai bisogno.

Scopri cosa possono fare le chiusure per te e come sono comunemente usati e segui schemi standard a meno che tu non abbia davvero bisogno (non volerlo) di usarli per qualcos'altro.

Se vuoi solo usarli (ad esempio, per impararli), fallo sul tuo progetto di gioco.

    
risposta data 28.04.2011 - 16:31
fonte
3

Comprendi cos'è una chiusura

  • Una chiusura è una funzione di prima classe che cattura i collegamenti lessicali nel suo ambiente. Questo impedisce al garbage collector di liberare lo spazio fino a quando tutti i riferimenti alla chiusura sono spariti.

Scopri come si svilupperà la chiusura

  • È possibile creare facilmente una perdita di memoria con una chiusura perché l'unica interfaccia alla memoria allocata è attraverso la chiusura (in genere). Assicurati che la tua chiusura non cresca illimitata.

Attenzione per l'acquisizione di riferimenti

  • Questo è più di un trucchetto standard, ma è ancora più importante quando si tratta di chiusure. Una chiusura acquisirà variabili lessicali incluse quelle che contengono riferimenti. Ciò significa che qualunque cosa rimandi a questi riferimenti continuerà a rimanere fedele fino a quando la chiusura è intorno, a meno che non siano refs esplicitamente deboli.

Non chiudere le variabili su cui non devi chiudere

  • È uno spreco, codice errato e rende più probabile l'introduzione di una perdita di memoria.

Rendi le funzioni che diventeranno le chiusure il più semplici possibile

  • Più è grande, più complessa la funzione che diventerà una chiusura, più è probabile che si verifichi un bug che potrebbe portare a una perdita di memoria.

Non creare chiusure quando non sono necessarie

  • Vedi: buon senso
risposta data 21.01.2012 - 21:11
fonte
1

In generale, puoi evitare di spararti ai piedi di:

  1. Comprensione completa dell'ambito e del contesto di esecuzione dei contenuti di chiusura
  2. Capire come si comportano i valori e i riferimenti agli oggetti quando vengono chiusi
  3. Capire esattamente quando vengono valutate le cose nella chiusura, in particolare per casi come l'utilizzo della questa parola chiave o un'istruzione eval nella chiusura (ossia tempo di creazione della chiusura e tempo di esecuzione )

Gioca con le chiusure, scopri come funzionano, quindi puoi usarle con sicurezza e ottenere risultati attesi.

    
risposta data 29.04.2011 - 03:59
fonte

Leggi altre domande sui tag