気になる点があるので、良かったらご教授願います。
(1)「function 名前()}」のように関数化されたデータというのは、
名前を呼び出されるまではデータは保持しないのでしょうか?
例えば名前を出す前にそこのデータを参照するということは出来ないのでしょうか?
function a(){
aa=1;}
document.write(aa);
(2)ローカル変数とグローバル変数の適用範囲がいまいち把握出来ないのですが、
ローカル変数は宣言しなければ機能しないのでしょうか?それともブラウザの仕様などにもよるのでしょうか?
グローバル変数は<script language="JavaScript">・・・</script>~
<script language="JavaScript">・・・</script>間なども問わず機能するものなのでしょうか?
分かりづらい点などあると思いますが、回答よろしくお願いします。
No.1ベストアンサー
- 回答日時:
JavaScriptではvarが省略された場合、その変数はグローバル変数と見なされます。
関数内でvar宣言するとそのスコープはその関数全体になります。<script>タグがある位置は関係ありません。
他の言語のようにブロック・レベルのスコープはありません。
ローカル、グローバルにかかわらず値(又は参照)を代入されるまで、
データは保存(アドレス確保)されません。undefineです。
(1)の
function a(){
aa=1;}
document.write(aa);
では、aaはグローバルスコープになっていますが、
a()が実行されていないのでundefineです。
a();
document.write(aa);
とするかaaが保持されます。
関数内のローカルな変数にアクセスするには、
クラス化(オブジェクト化)して
var aa;
aa = 2
function a(){
this.aa=1;
}
document.write(aa); // 2
var b = new a();
document.write(b.aa); // 1
としてアクセスできます。
このあたりまでは、基本なのでわかりやすいですが、配列変数とか
匿名関数、高階関数、クロージャ-だのが絡んでくると複雑怪奇
になります。
参考URLが結構わかりやすいですよ。
参考URL:http://www.atmarkit.co.jp/fdotnet/ajaxjs/index/i …
No.2
- 回答日時:
(1)
>名前を呼び出されるまではデータは保持しないのでしょうか?
はい。
>例えば名前を出す前にそこのデータを参照するということは出来ないのでしょうか?
グローバル変数として値を代入すれば、その後使えるようになります。
(2)
>ローカル変数とグローバル変数の適用範囲がいまいち把握出来ないのですが、
おそらく var をつける習慣がないと、そのような事態に陥るかと思います。JavaScript では、var で宣言された変数はローカルとして、つけずに使用された変数はグローバルとして扱われます。
function test( ) {
a = 1; // グローバル変数。test 外でも参照可
var b = 1; // ローカル変数。test 内でのみ参照可
}
>それともブラウザの仕様などにもよるのでしょうか?
Web 標準です。
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma26 …
>グローバル変数は<script language="JavaScript">・・・</script>~
<script language="JavaScript">・・・</script>間なども問わず機能するものなのでしょうか?
script 要素外では機能しません。
<script type="text/javascript"> の type="text/javascript" の部分は、要素の内容のメディアタイプの指定です。中身を javascirpt として読ませることを指定しています。(本当なら application/javascript が正しい)。それと同様に <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> の部分は、その文書のメディアタイプが html であるという指定です。
<script> の外は html 言語ですから、javascirpt 言語の変数は意味を持たないことになります。
回答ありがとうございます。遅れてすいません。
分かりやすく参考になりました、疑問がすっきりしました。
それでは回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript JAVASCRIPT 2 2022/04/15 15:10
- JavaScript javascriptで変数を組み込みたい 2 2023/01/13 09:52
- JavaScript javascriptで入力フォームが空欄の時にアラートによるエラーを出すコードを書いています。 2 2023/06/13 17:58
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript プラグイン無しでContactform7にdatepickerを実装 3 2022/10/25 02:18
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- JavaScript Google reCAPTCHAについて 1 2023/02/22 14:37
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
読み込んだQRコードをフォーム...
-
特定の文字列を複数抜き出した...
-
var exports = exports || {}; ...
-
ローディングアニメーションの...
-
GASでチェックボックスを一括of...
-
追加ボタンを押した際に ok ボ...
-
①入力フォーム→②確認表示画面→③...
-
GASに文字列として関数を入れる...
-
GASでGoogleフォームの自動返信...
-
React hooksが値を返して配列変...
-
初心者です。gulpでコンパイル...
-
ジャバスクリプトについて。
-
プログラムについて。
-
HTMLタグに複数のクラスを設定...
-
Googleフォームで選択肢に応じ...
-
ボタンを押したあとに画像を表...
-
disabled プロパティが表示され...
-
出発駅A、到着駅Bを選択すると...
-
Colorboxがうまく設置できません
-
Cookieに保存されない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
二次元配列を使って順位をだす...
-
プログラムについて。
-
Q&A掲示板の入力フォームに文字...
-
メールフォームの日付入力フォ...
-
iOSのみダブルタップが必要
-
ジャバスクリプトについて。
-
画面遷移を行わずに同一ページ...
-
特定の文字列を複数抜き出した...
-
指定時間になったら、WEBサイト...
-
追加ボタンを押した際に ok ボ...
-
①入力フォーム→②確認表示画面→③...
-
スマホ上で、左右スワイプで次...
-
読み込んだQRコードをフォーム...
-
フロントエンドフレームワーク...
-
React hooksが値を返して配列変...
-
GASでGoogleフォームの自動返信...
-
初心者です。gulpでコンパイル...
-
階層別の組織図の自動作成について
-
HTMLで作った時報アプリが動き...
-
jQueryで同じクラス名のものを...
おすすめ情報