2016-11-18 8 views
5

Beim Prüfen von Bereichen einer Funktion in der DevTools-Konsole habe ich einen "Skript" -Bereich bemerkt. Nach ein wenig Forschung scheint es für let und const Variablen erstellt zu werden.Was ist der Zweck des Skriptbereichs?

Scopes einer Funktion in einem Skript ohne const oder let Variablen:

the global scope

Scopes einer Funktion in einem Skript mit einer let Variable:

a global scope and a script scope

Doch die folgende druckt 1 in der Konsole - Variablen im Skriptbereich können weiterhin von anderen Skripts aus aufgerufen werden ts:

<script>let v = 1</script> 
<script>console.log(v)</script> 

Ich habe von ES6-Modulen gehört, in denen Top-Level-Variablen von außerhalb eines Moduls nicht zugänglich sind. Wird dafür der Anwendungsbereich genutzt oder hat er einen anderen Zweck?

Antwort

6

Wenn Sie eine Variable mit var auf der obersten Ebene deklarieren (d. H. Nicht innerhalb einer Funktion), wird sie automatisch zu einer globalen Variablen (im Browser können Sie als Eigenschaft von window darauf zugreifen). Anders bei den Variablen, die mit let und const deklariert wurden - sie werden keine globalen Variablen. Sie können auf sie in einem anderen Skript-Tag zugreifen, aber Sie können nicht auf sie als Eigenschaften von window zugreifen.

Sehen Sie folgendes Beispiel:

<script> 
 
    var test1 = 42; 
 
    let test2 = 43; 
 
</script> 
 
<script> 
 
    console.log(test1); // 42 
 
    console.log(window.test1); // 42 
 
    console.log(test2); // 43 
 
    console.log(window.test2); // undefined 
 
</script>

Verwandte Themen