Supponiamo di avere il seguente script, chiamato include_strict.js
. Dopo esegue dovrei avere window.global1
definito:"use strict"; + jQuery.getScript() = lo script non può esportare nello spazio dei nomi globale
"use strict";
var globalVar = {};
alert(typeof window.globalVar);
Ma se includo da un blocco di JavaScript con
$.getScript("include_strict.js");
L'avviso dice undefined
. Perché? Che cosa sta succedendo qui?
Cordiali saluti, non è quello che succede se includere il file utilizzando un tag script:
<script type="text/javascript" src="include_strict.js"></script>
Ecco, vedo l'avviso previsto, object
. E se rimuovo "use strict";
, quindi entrambi jQuery.getScript()
e <script>;
hanno lo stesso effetto di visualizzare object
.
Ho creato un esempio (https://docs.google.com/file/d/0B-XXu97sL1Ckb0x0OHptTmVMY00/edit) per dimostrarlo.
Mi battuto da alcuni secondi ;-) – Prinzhorn
Molto interessante. Ho appena scoperto questo problema per la prima volta e ha perfettamente senso. Il mio problema è che ho bisogno di eseguire diversi script in ordine dopo che sono stati caricati, quindi ho bisogno di sapere quando lo script è stato caricato prima di aggiungere lo script successivo. C'è un modo per sapere se uno script è stato caricato se utilizzo il metodo di aggiunta dello script al DOM? would .load() funziona? – Redtopia