• ベストアンサー

グローバル変数について

とあるソースを見ていまして、関数の外側で画像を読み込んでいました。 説明にはグローバル変数とかなっているんですけど、 外側では処理は書けないんですよね?? img_back = new Image(); // 背景の画像 img_back.src = "img_back.png"; これ、できないと思ってるんですけど動きます。 文法的にあっているんでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.4

>htmlの<head>の<script>は宣言だけで実行はされないと >どこかで見た記憶があるんですが、いいのでしょうか? javascriptはインタプリンタですからその行が呼び出された時点で動作します。 (window.onload=function(){}などをつかえば別ですが・・・) headだろうがbodyだろうが関係ありません。 あとはhead内に書かれた文字を表示するかどうかブラウザの解釈の問題ですね。 webブラウザというものは基本的に文法エラーのあるマークアップ言語を ある程度好意的に解釈して表示をするものです <html> <head> hoge </head> <body> fuga </body> </html> この場合、文法エラーでも「hoge」は表示されます

uzume_z
質問者

お礼

再度のご回答有り難うございます。 <head>でも実行されるんですか。知りませんでした。 fugaでも実行されると聞いてびっくりです。 サーバではabc.jpegがabc.Jpegになっただけで反応しなかったのに。 仕組みはインタプリタだからみたいですね? VBAとかもインタプリタみたいですけど 関数の外に書いたら実行されるのかな。 ちょっと疑問が広がってきてしまいました。

その他の回答 (3)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

javascriptの場合は、関数内でもvarで処理しなければグローバル変数になります 関数外で宣言していなくてもかまいません。 <script> a=1; b=2; function hoge(){ var a=3; b=4; c=5; } hoge(); document.write("a="+a+"<br>"); document.write("b="+b+"<br>"); document.write("c="+c+"<br>"); </script>

uzume_z
質問者

お礼

ご回答有り難うございます。 ちょっと分からないのですが、 <head>に書いても<body>に書いても 両方ともdocument.writeが実行されてしまいます。 htmlの<head>の<script>は宣言だけで実行はされないと どこかで見た記憶があるんですが、いいのでしょうか?

  • Gotthold
  • ベストアンサー率47% (396/832)
回答No.2

> ひょっとして言語によって違うのでしょうか。 そりゃ当然違います。 たとえば、C言語は必ず関数の中に処理を記述します。

uzume_z
質問者

お礼

やっぱり違うんですね。 1つでも合っててホッとしました。

  • Gotthold
  • ベストアンサー率47% (396/832)
回答No.1

> 外側では処理は書けないんですよね?? かけます。 なぜかけないと思ったのですか?

uzume_z
質問者

お礼

早くのご回答有り難うございます。 書けるんですね・・・ 処理のための関数だからと教えてもらいました。 ひょっとして言語によって違うのでしょうか。

関連するQ&A