スコープ規則とは?
すこーぷきそく
スコープ規則とは、プログラム中で変数や関数の名前がどの範囲で有効かを定める、プログラミング言語のルールです。
スコープ規則(スコープルール)は、変数・関数・クラスなどの識別子(名前)がプログラムのどの部分から参照できるかを決める規則の総称です。スコープ(scope)とは「有効範囲」のことで、適切なスコープ設計はバグの防止と可読性の向上に直結します。
スコープには大きく分けて二つの種類があります。
- 静的スコープ(レキシカルスコープ): 変数の有効範囲がソースコードの字句構造(記述位置)によって決まる。C、Java、Python、JavaScriptなど多くの現代言語はこちらを採用。
- 動的スコープ: 変数の有効範囲がプログラムの実行経路(呼び出し履歴)によって決まる。一部の古い言語やEmacs Lispなどで見られる。
静的スコープの言語では、変数のスコープは関数、ブロック(波括弧{}の内側)、モジュールなどの単位で決まります。内側のスコープから外側のスコープの変数は参照できますが、逆はできません(スコープチェーン)。JavaScriptではクロージャによって内側の関数が外側の変数を「記憶」する仕組みもスコープ規則に基づいています。
また変数の宣言位置に関して「ブロックスコープ」(let/constなど)と「関数スコープ」(varなど)の違いも重要です。グローバルスコープの変数はどこからでも参照でき便利ですが、意図しない変更や名前の衝突が起きやすいため、必要最小限にとどめることが推奨されています。
使い方・例文
JavaScriptでifブロック内にletで宣言した変数は、そのブロックの外から参照しようとするとエラーになります。これがブロックスコープの動作で、変数の影響範囲を限定してコードの安全性を高めます。
この用語をシェア
最終更新: