2015-09-14 22 views
81

エクスポートしたい変数があるとします。Javascript ES6 export const vs export let

export let a = 1; 

私はconstletの違いを理解対

export const a = 1; 

の違いは何ですが、あなたがそれらをエクスポートするとき、違いは何ですか?

+0

'export'キーワード詳細(https://developer.mozilla.org/en/docs/web/javascript/reference/statements/export)。現在のところ、Webブラウザではネイティブにサポートされていません。 – RBT

答えて

131

ES6では、importは、エクスポートされた値のライブ読み取り専用ビューです。あなたがimport a from "somemodule";を行う際にその結果、あなたは関係なく、あなたがモジュールでaを宣言する方法aに割り当てることはできません。

ただし、インポートされた変数はliveビューであるため、エクスポートの「生の」エクスポートされた変数に従って変更されます。 (下記参照記事から借りた)次のコードを考えてみましょう:あなたが見ることができるように

//------ lib.js ------ 
export let counter = 3; 
export function incCounter() { 
    counter++; 
} 

//------ main1.js ------ 
import { counter, incCounter } from './lib'; 

// The imported value `counter` is live 
console.log(counter); // 3 
incCounter(); 
console.log(counter); // 4 

// The imported value can’t be changed 
counter++; // TypeError 

が、差は本当にlib.js、ないmain1.jsです。


を要約しないように:あなたはimport -ed変数に割り当てることはできません

  • 、関係なく、あなたはモジュールに対応する変数を宣言しますか。
  • 伝統的なlet -vs- constセマンティクスはモジュールで宣言された変数に適用されます。
    • 変数がconstと宣言されている場合は、その変数をどこにでも再割り当てまたはリバウンドすることはできません。
    • 変数がlet宣言された場合、それが唯一のモジュール(ただしユーザー)に再割り当てすることができます。それが変更された場合、importはそれに応じて、変数の変更を-ed。

リファレンス:[ここ] http://exploringjs.com/es6/ch_modules.html#leanpub-auto-in-es6-imports-are-live-read-only-views-on-exported-values

2

一度インポートすると、動作は同じになります(変数はソースファイルの外で使用されます)。

唯一の違いは、このファイルの最後の前に再割り当てしようとする場合です。