回答:
ES6では、import
sはエクスポートされた値のライブ読み取り専用ビューです。その結果、を実行すると、モジュールでどのように宣言しても、にimport a from "somemodule";
割り当てることはできません。a
a
ただし、インポートされた変数はライブビューであるため、エクスポートの「生の」エクスポートされた変数に従って変化します。次のコードを検討してください(以下の参照記事から借用):
//------ 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
export
キーワードの詳細はこちら。現在、どのWebブラウザーでもネイティブでサポートされていません。