[解決済み] Javascript ES6 export constとexport letの比較
2022-05-06 22:38:16
質問
例えば、エクスポートしたい変数があるとします。とはどのような違いがあるのでしょうか?
export const a = 1;
対
export let a = 1;
の違いは理解できました。
const
と
let
しかし、それらをエクスポートした場合、どのような違いがあるのでしょうか?
どのように解決するのですか?
ES6では
import
は、エクスポートされた値に対する読み取り専用のライブビューです。その結果
import a from "somemodule";
に割り当てることはできません。
a
をどのように宣言しても
a
をモジュール内で使用します。
ただし、インポートされた変数は 生きる ビューの場合、exports でエクスポートされた "raw" 変数にしたがって変化します。以下のコードを考えてみましょう(以下の参考記事から拝借)。
//------ 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
-対const
のセマンティクスは、モジュール内で宣言された変数に適用されます。-
変数が宣言されている場合
const
の場合、どこにも再割り当てやリバウンドはできません。 -
変数が宣言されている場合
let
の場合、モジュール内でのみ再割り当てが可能です(ユーザは不可)。もし変更された場合はimport
-ed 変数はそれに応じて変化します。
-
変数が宣言されている場合
関連
-
[解決済み] 配列の結合時に未定義のプロパティ 'push' を読み込むことができない
-
[解決済み】TypeScript-のAngular Frameworkエラー - "exportAsがngFormに設定されたディレクティブはありません"
-
HTML5 LocalStorage ローカルストレージとセッションストレージの使用法
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] GUID / UUIDの作成方法
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] event.preventDefault() vs. return false
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
vue3レスポンシブ対応のためのsetup+ref+reactive
-
vueのプロジェクトでモックを使用する方法を知っていますか?
-
[解決済み】最大呼び出しスタックサイズ超過エラー
-
[解決済み】Node.js getaddrinfo ENOTFOUND
-
[解決済み】JavaScriptの配列でforEachが関数でない不具合
-
[解決済み】リソースの読み込みに失敗した:Bind関数でサーバーが500(Internal Server Error)のステータスで応答した【非公開
-
[解決済み】GETできない / Nodejsエラー
-
[解決済み】TypeErrorの解決方法。未定義またはヌルをオブジェクトに変換できない
-
[解決済み】React Uncaught Error: 対象コンテナが DOM 要素でない [重複]。
-
nodejs unhandledPromiseRejectionWarning メッセージ