javascript - Vad är skillnaden mellan en modul och ett skript?
Jag försöker gå igenom TypeScript-dokumentationen för att förstå moduler som är samma som ES6-moduler.
typescript-modules - dokumentation för TypeScript-moduler. Det står att
Moduler körs inom sitt eget omfång, inte i det globala omfånget; detta innebär att variabler, funktioner, klasser etc. som deklareras i en modul inte är synliga utanför modulen om de inte uttryckligen exporteras med någon av exportformerna. Omvänt, för att använda en variabel, funktion, klass, gränssnitt etc. som exporteras från en annan modul, måste den importeras med någon av importformerna.
Och
I TypeScript, precis som i ECMAScript 2015, betraktas varje fil som innehåller en top-nivå import eller export som en modul. Omvänt behandlas en fil utan några top-nivå import- eller exportdeklarationer som ett skript vars innehåll är tillgängligt i det globala omfånget (och därför även för moduler).
Det står att allt i en fil utan import- eller exportdeklarationer är tillgängligt globalt. Men det är inte sant.
mapp
- script1.js
- script2.js
script1.js
var variable = "Hello";script2.js
console.log(variable);Enligt uttalandet som står i dokumentationen, när jag kör script2.js, bör det inte ge något fel och skriva ut värdet på variabeln i konsolen eftersom script1.js inte har några import- eller export-satser och därför är variabeln tillgänglig i det globala omfånget. Men det ger ett fel. Vad betyder det då att skriptets innehåll är tillgängligt i det globala omfånget?
Svar #1
I en HTML-fil, om du gör en <script src="./script2.js" /><script src="./script1.js" />, skulle du se Hello i konsolen.
Svar #2
Jag tror att du behöver köra script1.js-filen för att få den deklarerade variabeln. Försök köra script1.js-filen först och sedan script2.js