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

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

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

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

Q&A

解決済

2回答

7466閲覧

javascriptで外部のJSファイルが読み込まれる場合についての疑問です

michiaki

総合スコア29

JavaScript

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

0グッド

1クリップ

投稿2016/08/17 12:20

###前提・考え方
例えばhtmlで<script>タグを使って、複数のjsファイルを読み込むこととします。
各ファイルで使用する変数は各ファイルで宣言することになると思います。
(例:a.jsでvar i;を定義します。)

別のファイル(b.js)からa.jsで宣言した変数iを参照する場合、b.jsで変数定義をせず、iを呼び出すと
普通に使えています。(逆にb.jsでvarでiを宣言すると別変数として解釈?)

C言語ではextern宣言かポインタor配列(たぶん同じ意味)だと思いますが、javascriptではそのような考え方が
存在するのでしょうか?

各ファイル(a.js,b.js・・・)でwarnigで気持ち悪い感じがします。
(別に動作はきちんと動いているので、動作だけ見れば問題ないんですが・・・)

個人的に調べたところ、複数のjsファイルを読み込んでも、動作せずに待機しており、HTMLで読み込まれた
ファイルを全て読み込んだ時点で、実行を開始しているとのことでした。

ということはいくつファイルを読み込んでも、最終的には一つのファイル?(ファイルの塊)として処理されて
いるのでしょうか?

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

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

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

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

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

guest

回答2

0

ベストアンサー

最終的には一つのファイル?(ファイルの塊)として処理されて

いるのでしょうか?

HTML上の単純なスクリプトファイル指定の話だと思いますが、
ファイルの塊ではなく、

html

1<html> 2<body> 3<script> 4var i = 0; 5</script> 6</body> 7</html>

と、
a.js

javascript

1var i = 0;

html

1<html> 2<body> 3<script src="a.js"></script> 4</body> 5</html>

と書くのも、a.jsを外部ファイルに出してすっきりした以外に差はないというだけの事です。

塊になるというよりは、ブラウザがその位置に展開するだけで、
Cで言えば #include マクロでそこに展開されるというのと似たような話です。

javascriptではほとんどfunction内に収めますので、ほかのscriptタグで変数がグローバルに定義される事を期待するのは通常行儀が悪いだけですね。

投稿2016/08/17 12:39

flied_onion

総合スコア2604

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

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

michiaki

2016/08/18 07:55

例えば、各jsファイルで共通に使用する変数が存在する場合、どのような形式で用いられるのでしょうか?一回一回変数を定義しなおして、代入するしかないのでしょうか?
flied_onion

2016/08/18 10:21

変数ではなく、関数などオブジェクトの要素としてセットしておいたり、そこから取り出すことが多いでしょう。 ただの変数をグローバルに宣言することはしませんね。
michiaki

2016/08/18 12:41

javascriptは全く知らないところから、独学で勉強しています。よって実際に他の人がどういう風にコードを書いているのかはなかなかわからないので、このサイトは非常に勉強になります。私の質問に答えて頂きましたのでベストアンサーにさせて頂きます。
guest

0

【JavaScriptのグローバル変数はwindowオブジェクトのプロパティ | hiro345】
http://www.sssg.org/blogs/hiro345/archives/12026.html

【Windowオブジェクト | JavaScript プログラミング解説】
http://so-zou.jp/web-app/tech/programming/javascript/window/

JavaScript

1var a = 0;

とグローバル変数を定義することと、

JavaScript

1window.a = 0;

とすることは同義です。

投稿2016/08/17 13:20

kei344

総合スコア69407

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

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

michiaki

2016/08/18 07:52

というこはHTMLから見ると、どこのjsファイルに定義されていても、window.変数で取得できるということなんですね。 なんかjavascript はCと違いつかみにくい言語のような気がします。
kei344

2016/08/18 12:01

スコープが広めなので他の言語を触られるとわかりにくいかもしれません。 最近の流れはグローバル変数をあまり使わない書き方になってきていると思います。
michiaki

2016/08/18 12:46

そうなんですか・・。私はスタートがC言語だったので、なかなかjavascriptはつかみにくいです。宣言を先頭で行って、関数は後に書き、コンパイルして・・・という流れが体に染みついているので、インタプリタ型言語はなかなかしっくりいきません。しかし今の流れはその方が主流なので慣れるしかないですね。javaも独自で勉強中なんですが、そっちの方がしっくりきます。ご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問