2016-11-18 33 views
5

DevTools konsolunda bir işlevin kapsamlarını incelerken bir "komut dosyası" kapsamı fark ettim. Biraz araştırma yaptıktan sonra let ve const değişkenleri için oluşturulmuş gibi görünüyor. const veya let değişken olmayan bir komut bir fonksiyonKomut kapsamının amacı nedir?

Scopes:

a let değişkeni olan bir komut fonksiyon

the global scope

Scopes:

a global scope and a script scope

Yine şu konsolda 1 yazdırır - kod kapsamındaki değişkenler yine de başka bir yazımdan erişilebilir ts:

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

En üst düzey değişkenlerin bir modülün dışından erişilebilir olmayacağı ES6 modüllerini duydum. Kapsamın amacı bu mu, yoksa başka bir amacı var mı?

cevap

6

var kullanarak bir değişken üst düzeyde (yani, bir işlev içinde değil) kullanarak bildirdiğinizde, otomatik olarak bir genel değişken olur (böylece tarayıcıda window özelliği olarak erişebilirsiniz). let ve const kullanılarak bildirilen değişkenlerle farklıdır; bunlar global değişkenler haline gelmez. Bunlara başka bir komut dosyasında erişebilirsiniz, ancak bunlara window'un özellikleri olarak erişemezsiniz.

<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>

:

bu örneğe bakın