JavaScriptのグローバル変数とローカル変数の違いをわかりやすく解説
変数の「スコープ」とは、プログラムの中でその変数が定義され、参照できる範囲のことを指します。JavaScriptの変数には、大きく分けて次の2種類のスコープしか存在しません。
グローバル変数(Global Variables)
グローバル変数は、名前の通り「グローバル(大域)スコープ」を持つ変数です。これは、JavaScriptコード内のどこからでもアクセス・利用できることを意味します。関数の外で宣言された変数は、自動的にグローバル変数として扱われます。
ローカル変数(Local Variables)
ローカル変数は、その変数が宣言された関数の中でのみ有効な変数です。関数の外部からは参照できません。また、関数の引数(パラメータ)も、必ずその関数に固有のローカル変数として扱われる点に注意しましょう。
同名の変数がある場合の優先順位
関数の内部では、グローバル変数と同じ名前のローカル変数が宣言されていた場合、ローカル変数が優先されます。つまり、グローバル変数と同じ名前のローカル変数や関数パラメータを宣言すると、その関数内ではグローバル変数が「隠蔽」され、参照できなくなります。
サンプルコード
以下は、グローバル変数とローカル変数を宣言する例です。
<html>
<body onload = checkscope();>
<script>
<!--
var myVar = "global"; // グローバル変数を宣言
function checkscope( ) {
var myVar = "local"; // ローカル変数を宣言
document.write(myVar);
}
//-->
</script>
</body>
</html>
このコードを実行すると、checkscope() 関数が呼び出された時点で、関数内で宣言されたローカル変数 myVar が優先されるため、画面には「local」と表示されます。
補足:let・constとブロックスコープ
なお、ES2015(ES6)以降のJavaScriptでは、let や const を使うことで「ブロックスコープ」を持つ変数を宣言できるようになりました。var の代わりにこれらを使うことで、意図しないスコープの混同やバグを防ぎやすくなるため、現代の開発では推奨されています。
-
Pythonのグローバル変数とローカル変数の違いとは?わかりやすく解説
Pythonにおいて、グローバル変数とはプログラム全体(モジュール内のどこからでも)アクセスできる変数のことです。一方、ローカル変数は特定のスコープ内、たとえば関数定義の中でのみアクセスできる変数であり、関数内で一時的に使用される変数などがこれに該当します。コード例以下のコードを見てみましょう。q = I love coffee # グローバル変数 def f(): p = Me Tarzan, You Jane. # ローカル変数 print(p) f() print(q)実行結果このコードを実行すると、次のような出力が得られます。Me Tarzan, You Jan
-
JavaとJavaScriptの違いとは?歴史・技術・使い分けを徹底解説
ウェブ開発者のジェレミー・キースは2009年、「JavaとJavaScriptの関係は、ハムとハムスターの関係のようなものだ」と語りました。この比喩がどれほど正確かは議論の余地がありますが、その本質は的確です。共通する言語的ルーツを持つにもかかわらず、JavaとJavaScriptはまったく異なる2つのプログラミング言語なのです。年月とともに両者の重なりも多少増えましたが、今なおJavaScriptはウェブサイトにインタラクティブ性をもたらすフロントエンド言語の主流であり続け、Javaはサーバーサイドやアプリケーション開発で人気を保っています。開発者を採用したい方、プログラミングを学びたい方