teratail header banner
teratail header banner
質問するログイン新規登録

質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

2278閲覧

JavaScript の import がベタ書きしか許されていない理由を知りたいです

munekun

総合スコア116

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

2グッド

3クリップ

投稿2024/04/02 15:27

編集2024/04/03 13:50

2

3

質問

JavaScript の import の際、テンプレートリテラルと変数が使えないのはどういうロジックなのでしょうか?

こういう仕様になってる理由がわからないのですが、なにか歴史的な経緯とかですか?

具体例

ベタ書きの普通のカンマシングルクォート「'」はできる(というかこれしかできない)

JavaScript

1import utils from '/assets/js/module/utils.js';

バックスラッシュバッククォート「`」だとできない

JavaScript

1import utils from `/assets/js/module/utils.js`;

変数だとできない

JavaScript

1const DIR = '/assets/js/module'; 2import utils from DIR + '/utils.js';

・・・不便じゃないですか?(。•́︿•̀。)

hiraly, ams2020👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

int32_t

2024/04/03 00:12

質問の本題とは関係ないですが、「'」は「シングルクォート」、「`」は「バッククォート」と呼ぶのが普通だと思います。 カンマは「,」、バックスラッシュは「\」。
munekun

2024/04/03 13:51

コメントありがとうございます 用語の誤りを訂正しました
guest

回答2

0

ベストアンサー

その制約により、モジュールの評価前に静的解析が行われ、リンクされるためです。
恐らくはそこを許容してしまうと、他モジュールとのリンク前にパスに指定された変数などの評価が行われ、結果として他の処理も走ってしまうから…ではないですかね…?

詳細はリファレンスなどをご参照ください。
参考: import - JavaScript | MDN

投稿2024/04/02 17:09

Refrain

総合スコア684

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2024/04/02 23:34

> モジュールの評価前に静的解析が行われ、リンクされ そこまで考えたことなかった。勉強になりました+1
guest

0

ご質問から外れるかもしれませんが、動的インポートであればできます。

リテラルでない指定子を持つモジュールのインポート | import() - JavaScript | MDN

投稿2024/04/03 00:07

Lhankor_Mhy

総合スコア37461

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

munekun

2024/04/04 00:02

ありがとうございます。モジュール化した.jsファイルが入っているディレクトリが同じなのでディレクトリ名の部分に質問のような DIR という変数を使いたくなっての質問だったのですが、そちらの動的な import() で変数が使えるのならもう全部そうしたくなりますね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問