こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

JavaとJavaScriptとの変数宣言の違いについて

立て続けに自分の名前が3つも並び、お恥ずかしいばかりですが、またお訊きします。
自分は2年程前にPCスクールでJavaを学んだ者です。
結局は、実をむすぶ事無く現在進路を迷っているのですが。
そんな事はいいとして、変数宣言についてです。
Javaではメソッド内で宣言した変数は、そのメソッド内でしか使えませんが、JavaScriptではメソッドの枠を超えて使用できるのでしょうか。
基礎中の基礎で恥ずかしさもありますが、質問する事にしました。
他の質問ともどもどうぞ宜しくお願い致します。

投稿日時 - 2009-01-16 03:10:05

QNo.4633922

困ってます

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

変数宣言を行っていない変数は、globalとして扱われます。

ただし変数のスコープがわかりにくくなる、変数名の重複による不意のバグの発生の可能性も考えられるため、varによる変数宣言を推奨です。

<script>
var a; //global

function func1(){
var b // local
b=1;
}
function func2(){
c=1; //global
}

function func3(){
a=1;
}

function func4(){
var a; // local
a=999;
}

function output(){
try{ alert('a : '+a); } catch(e){ alert('a is not defined'); }
try{ alert('b : '+ b); } catch(e){ alert('b is not defined'); }
try{ alert('c : '+c); } catch(e){ alert('c is not defined'); }
}

// run all functions
func1();
func2();
func3();
func4();
output();

</script>

投稿日時 - 2009-01-16 11:21:25

お礼

おお!!! 望んでいた解答がやっと得られました。
レスを頂き、本当にありがとうございます。
これで胸の痞えが取れた気分で先に進む事ができます。
それと、わざわざ書いて頂きましたソースコードをテキストエディタに書いてみました。
これを実行した結果、ちゃんと動いて確たる裏づけが取れました。
やはり、諦めずに待ってみるものですね。
私ごときのためにいろいろとご面倒をおかけしてすみませんでした。

投稿日時 - 2009-01-16 11:54:46

ANo.3

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

>function関数間では括りを超えて変数を使用できるのでしょうか
#1さんの指摘の通りです。両言語は似て非なるものです。
但し、スコープに関してはJavaと同じです。functionに属さない
変数は何処でも使えますが、function内で定義した変数はその
function内でのみ使用可能です。

>大半が変数宣言の際、varを省いてますよね
それは何かの間違いです。もしかして先頭が大文字の名前では?
組込みオブジェクト(例えば、String とか Math)は予め定義済み
なので、いきなり出現しますが、通常の変数はvarで定義しないと
エラーになります。

投稿日時 - 2009-01-16 10:53:13

お礼

レスを頂き、ありがとうございます。
そうですか。function関数間でも不可能ですか。
よく分かりました。

投稿日時 - 2009-01-16 11:57:59

ANo.1

JavaとJavaScriptは全く違う言語です。名前が似てるだけです。

JavaScriptでのメソッド相当の物は「オブジェクトのプロパティに関数オブジェクトのリファレンスを代入したもの」とちょっとややこしいです。
JavaScriptは関数の中でvarで宣言された変数はその関数ローカルです。
ということで、
>JavaScriptではメソッドの枠を超えて使用できるのでしょうか。
出来ません。

投稿日時 - 2009-01-16 03:21:33

お礼

即レスを頂き、ありがとうございます。
なるほど。ただ、大半が変数宣言の際、varを省いてますよね。
万が一、varを先頭に付けなかった場合でも変数はメソッドの枠を超えて使用できないのでしょうね。
間違ってました。質問したかったのは、function関数間では括りを超えて変数を使用できるのでしょうか、という事です。
補足みたいになってしまって、すいません。

投稿日時 - 2009-01-16 04:22:14

あなたにオススメの質問