スコープの種類
JavaScriptにおけるスコープは、大きく分けて次の3つのタイプがあります。
-
ブロックスコープ(Block Scope):
ブロックスコープは、一般的に{}
で囲まれた範囲を指します。JavaScriptでは、let
やconst
キーワードで宣言された変数はブロックスコープを持ちますが、var
キーワードで宣言された変数はブロックスコープを持ちません。{ // ブロックスコープ let blockVar = "I am a block scoped variable"; const blockConst = "I am a block scoped constant"; var globalVar = "I am a global variable"; } console.log(blockVar); // エラー: ブロックスコープ外からはアクセス不可 console.log(blockConst); // エラー: ブロックスコープ外からはアクセス不可 console.log(globalVar); // アクセス可能
-
関数スコープ(Function Scope):
関数スコープは、関数内で宣言された変数がその関数内でのみアクセス可能であることを意味します。JavaScriptでは、var
キーワードで宣言された変数は関数スコープを持ちます。function functionScopeExample() { // 関数スコープ var functionVar = "I am a function scoped variable"; console.log(functionVar); // 関数内でアクセス可能 } console.log(functionVar); // エラー: 関数スコープ外からはアクセス不可
-
グローバルスコープ(Global Scope):
グローバルスコープは、どこからでもアクセス可能な最も外側のスコープです。スクリプトのどこからでもアクセス可能な変数や関数がグローバルスコープに定義されます。var globalVar = "I am a global variable"; function globalFunction() { console.log("I am a global function"); } console.log(globalVar); // グローバル変数にアクセス可能 globalFunction(); // グローバル関数にアクセス可能
これらのスコープを理解することで、変数や関数のアクセス性を適切に管理することができます。