2016-01-03 32 views
5

Sono una funzione di esportazione di ES2015. Ho provato a capire che online, ma i miei dubbi non sono ancora decisiES2015 Funzione interna di esportazione

Quando dichiaro di esportazione all'interno di una funzione anonima, spettacoli jshint seguente errore (almeno all'interno Intellij plugin):

dichiarazione E053 esportazione deve essere di portata globale.

Al contrario, JSHint chiede sempre di avvolgere tutto il codice all'interno della funzione anonima. Se scrivo codice nel seguente modo:

Dobbiamo scrivere molto codice nella parte superiore e inferiore della pagina. Qualche codice passerà da tra il file all'inizio (o alla fine) della pagina.

risposta

1

Il modo migliore per spiegarlo è javascript IIFE era il modo di creare l'incapsulamento. Dovresti inserire il codice del tuo modulo all'interno di uno e tornare e oggetto di qualche tipo. Se avessi bisogno di importare il codice, lo faresti con l'argomento. La nuova sintassi del modulo ti consente di fare lo stesso in un modo diverso. Pensa alle importazioni come argomenti per l'IIFE e le esportazioni come ritorno. Ecco la spiegazione completa per la sintassi di esportazione delle importazioni da Mozilla https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import

Ulteriori informazioni se si desidera esplorare di più ho creato alcuni fogli di stile che utilizzano babel, gulp, browserify e gelsomino in modo da poter scrivere tutto il mio codice in futuro come es2015. https://github.com/jamesrhaley/es2015-babel-gulp-jasmine.git

0

Se si utilizza la sintassi del modulo ES2015, probabilmente non è necessario avvolgere il codice in una funzione anonima poiché il caricatore del modulo gestisce il codice esportato.

Non sono sicuro di ogni modulo di caricamento ma quando si utilizza TypeScript + browserify, ogni file viene incapsulato per impedire che le variabili ingombrino lo spazio dei nomi globale. Vedi Why must export import declarations be on top level in es2015 per ulteriori informazioni su come lavorare con la sintassi del modulo e perché le variabili possono essere dichiarate globalmente.