- ベストアンサー
JavaとJavaScriptとの変数宣言の違いについて
立て続けに自分の名前が3つも並び、お恥ずかしいばかりですが、またお訊きします。 自分は2年程前にPCスクールでJavaを学んだ者です。 結局は、実をむすぶ事無く現在進路を迷っているのですが。 そんな事はいいとして、変数宣言についてです。 Javaではメソッド内で宣言した変数は、そのメソッド内でしか使えませんが、JavaScriptではメソッドの枠を超えて使用できるのでしょうか。 基礎中の基礎で恥ずかしさもありますが、質問する事にしました。 他の質問ともどもどうぞ宜しくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
変数宣言を行っていない変数は、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>
その他の回答 (2)
- nda23
- ベストアンサー率54% (777/1415)
>function関数間では括りを超えて変数を使用できるのでしょうか #1さんの指摘の通りです。両言語は似て非なるものです。 但し、スコープに関してはJavaと同じです。functionに属さない 変数は何処でも使えますが、function内で定義した変数はその function内でのみ使用可能です。 >大半が変数宣言の際、varを省いてますよね それは何かの間違いです。もしかして先頭が大文字の名前では? 組込みオブジェクト(例えば、String とか Math)は予め定義済み なので、いきなり出現しますが、通常の変数はvarで定義しないと エラーになります。
お礼
レスを頂き、ありがとうございます。 そうですか。function関数間でも不可能ですか。 よく分かりました。
- notnot
- ベストアンサー率47% (4900/10358)
JavaとJavaScriptは全く違う言語です。名前が似てるだけです。 JavaScriptでのメソッド相当の物は「オブジェクトのプロパティに関数オブジェクトのリファレンスを代入したもの」とちょっとややこしいです。 JavaScriptは関数の中でvarで宣言された変数はその関数ローカルです。 ということで、 >JavaScriptではメソッドの枠を超えて使用できるのでしょうか。 出来ません。
お礼
即レスを頂き、ありがとうございます。 なるほど。ただ、大半が変数宣言の際、varを省いてますよね。 万が一、varを先頭に付けなかった場合でも変数はメソッドの枠を超えて使用できないのでしょうね。 間違ってました。質問したかったのは、function関数間では括りを超えて変数を使用できるのでしょうか、という事です。 補足みたいになってしまって、すいません。
お礼
おお!!! 望んでいた解答がやっと得られました。 レスを頂き、本当にありがとうございます。 これで胸の痞えが取れた気分で先に進む事ができます。 それと、わざわざ書いて頂きましたソースコードをテキストエディタに書いてみました。 これを実行した結果、ちゃんと動いて確たる裏づけが取れました。 やはり、諦めずに待ってみるものですね。 私ごときのためにいろいろとご面倒をおかけしてすみませんでした。