2015-05-17 22 views
8

Ben kodu vardır:ES6 modülü kapsamı

// lib.js 
var a = "a"; 
export var b = "b"; 

// main.js 
console.log(a); // "a" variable is not available in a global scope 
import {b} from "lib"; 
console.log(a); // is "a" variable available in a global scope or only in a module scope? 

Yalnızca bir modül kapsamında modül ithal veya kullanılabilir hale gelmesinden sonra küresel kapsamda "a" değişkeni kullanabilir miyim? ES6 modülleri bu numara gibi benzer bir çalışma prensibi var mı: Sadece bir modül kapsamında

// module  
exports.module1 = (function(){ var a = "a"; })(); // "a" variable is not available in a global scope 

cevap

12

Ben modül aktardıktan sonra küresel kapsamda "a" değişkeni kullanabilir miyim yoksa kullanılabilir?

O ilan edildi modülünün içinde sadece ulaşılabilir

Will ES6 modülleri bu numara gibi benzer bir çalışma prensibine sahiptir:. [...]

Temelde evet.

  • Küresel kapsam
  • Modül kapsamı
  • Fonksiyon kapsamı
  • Blok kapsamı
:


ES6 "üst" için "alt" bu kapsamlarda türlü sipariş bulunuyor

+0

Çok teşekkür ederim. –

0

, başka bir modüle bir şeyler ihraç ettiğinizi söyler. Örneğin, var b = 'b' dışa aktarıyorsunuz, ancak var a = 'a' dışa aktarmıyorsunuz. Bu, lib.js'da yalnızca var a = 'a''u kullanabildiğiniz anlamına gelir, Bu, bildirildiği modülde yereldir ve yalnızca bu modülde kullanılabilir. var a, lib.js modülüne kapsamlıdır.