- ベストアンサー
グローバル変数について
とあるソースを見ていまして、関数の外側で画像を読み込んでいました。 説明にはグローバル変数とかなっているんですけど、 外側では処理は書けないんですよね?? img_back = new Image(); // 背景の画像 img_back.src = "img_back.png"; これ、できないと思ってるんですけど動きます。 文法的にあっているんでしょうか。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>htmlの<head>の<script>は宣言だけで実行はされないと >どこかで見た記憶があるんですが、いいのでしょうか? javascriptはインタプリンタですからその行が呼び出された時点で動作します。 (window.onload=function(){}などをつかえば別ですが・・・) headだろうがbodyだろうが関係ありません。 あとはhead内に書かれた文字を表示するかどうかブラウザの解釈の問題ですね。 webブラウザというものは基本的に文法エラーのあるマークアップ言語を ある程度好意的に解釈して表示をするものです <html> <head> hoge </head> <body> fuga </body> </html> この場合、文法エラーでも「hoge」は表示されます
その他の回答 (3)
- yambejp
- ベストアンサー率51% (3827/7415)
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>
お礼
ご回答有り難うございます。 ちょっと分からないのですが、 <head>に書いても<body>に書いても 両方ともdocument.writeが実行されてしまいます。 htmlの<head>の<script>は宣言だけで実行はされないと どこかで見た記憶があるんですが、いいのでしょうか?
- Gotthold
- ベストアンサー率47% (396/832)
> ひょっとして言語によって違うのでしょうか。 そりゃ当然違います。 たとえば、C言語は必ず関数の中に処理を記述します。
お礼
やっぱり違うんですね。 1つでも合っててホッとしました。
- Gotthold
- ベストアンサー率47% (396/832)
> 外側では処理は書けないんですよね?? かけます。 なぜかけないと思ったのですか?
お礼
早くのご回答有り難うございます。 書けるんですね・・・ 処理のための関数だからと教えてもらいました。 ひょっとして言語によって違うのでしょうか。
お礼
再度のご回答有り難うございます。 <head>でも実行されるんですか。知りませんでした。 fugaでも実行されると聞いてびっくりです。 サーバではabc.jpegがabc.Jpegになっただけで反応しなかったのに。 仕組みはインタプリタだからみたいですね? VBAとかもインタプリタみたいですけど 関数の外に書いたら実行されるのかな。 ちょっと疑問が広がってきてしまいました。