Mi chiedo se un blocco/funzione javascript sia sempre disponibile una volta caricato. Perché ho provato qualcosa e ora sono un po 'confuso. Ho definito un blocco di script in un div. Il blocco di script ha una funzione di gestione degli eventi per un elemento per ricaricare il div con ajax. La chiamata ajax restituisce l'html normale del div e lo sostituisce con quello corrente. Ma significa sostituire lo script che rende anche l'esecuzione. Ho pensato che la sceneggiatura sarebbe stata tagliata fuori dall'esecuzione dopo la dichiarazione sostitutiva. Ma non è stato così. Le righe di codice dopo l'istruzione sostitutiva sono state eseguite Così come funzionano queste cose. Come descrivi il tempo di vita di un blocco di script?Come conoscere la durata di un blocco di script o codice javascript?
risposta
Quando viene valutato il codice contenuto in un elemento script
, il risultato di tale valutazione del codice diventa parte dell'ambiente di runtime della pagina. La rimozione dell'elemento script
non rimuove le strutture risultanti (funzioni, ecc.) Dall'ambiente.
Quindi se lo script definisce le funzioni, o associa i gestori di eventi agli elementi o crea nuove proprietà su oggetti esistenti (incluso l'oggetto globale), tali funzioni, gestori e proprietà rimangono in memoria anche se lo script
che li ha definiti è rimosso dal DOM (soggetto alla solita garbage collection di JavaScript, ad esempio, gli oggetti non referenziati da nessuna parte sono idonei per GC, ma l'elemento script
non ha alcuna rilevanza su quello). L'elemento script
è semplicemente un meccanismo per il trasferimento del codice al browser.
- 1. Javascript script di blocco di esecuzione
- 2. Come attivare la visibilità di un tag di script?
- 3. Trova la durata dell'animazione del blocco di animazione corrente
- 4. C'è qualche differenza nello scrivere javascript in un singolo blocco di script o più blocchi
- 5. Durata delle variabili JavaScript
- 6. Come mostrare i numeri di riga per un blocco di codice usando JavaScript?
- 7. Qual è la differenza tra il caricamento di un'API di Google tramite callback o google.load o blocco di script semplice?
- 8. Durata (grande O)) di un algoritmo
- 9. Gli sviluppatori di javascript devono conoscere jquery?
- 10. È possibile ottenere il debugger di Internet Explorer per entrare nel codice JavaScript di lunga durata?
- 11. Come disabilitare lo stile di fondazione o di bootstrap per un blocco di codice html?
- 12. conoscere la profondità di un dizionario
- 13. Script di blocco in IE
- 14. Converti Node.JS frammento di codice di Javascript (Google Apps Script)
- 15. Rendi il codice sorgente da un blocco di codice l'ingresso ad un altro blocco di codice in Emacs org-mode
- 16. Come conoscere la dimensione di un array const?
- 17. Durata di un Singleton
- 18. È meglio avere un blocco sincronizzato all'interno di un blocco try o un blocco try all'interno di un blocco sincronizzato?
- 19. Qual è la durata della variabile all'interno del blocco?
- 20. Come conoscere la versione di pip stessa
- 21. Il codice C libera un blocco?
- 22. console rails - esegue un blocco di codice
- 23. Come sostituire un blocco di HTML con un altro blocco di codice HTML utilizzando jQuery
- 24. esegui atomicamente un blocco di codice
- 25. Come uscire dal blocco di codice PHP?
- 26. Come aggiungere codice di riferimento JavaScript o css da un modello di editor
- 27. come conoscere la profondità del clone superficiale di un git?
- 28. Come ottenere la durata di un file video?
- 29. riutilizzare un blocco di codice in YAML
- 30. Ripetere un blocco di codice un numero fisso di volte
Grazie per la risposta. Ho ancora una quastion. Dopo aver ricaricato div è stato caricato esattamente lo stesso blocco di script con le stesse identiche funzioni. Quindi sono stati pubblicizzati o sostituiti o ignorati? –
@HalilIbrahim: il codice viene eseguito nuovamente. Se hai funzioni dichiarate nell'ambito globale, quelle già presenti vengono sostituite con nuove. Se si hanno dichiarate variabili globali * senza * inizializzatori (quindi, solo 'var foo;' not 'var foo = 42;'), poiché la variabile è già dichiarata, la seconda dichiarazione viene ignorata. Se si hanno inizializzatori o assegnamenti (quindi, 'var foo = 42;' o solo 'foo = 42;'), questi vengono eseguiti di nuovo e quindi 'foo' è impostato (indietro) a' 42'. Ecc. Tutti gli effetti dell'esecuzione del codice avvengono in un secondo (terzo, quarto) tempo. –
@Crowder: Grazie per la risposta. –