スコープは、コードの特定の部分で変数と関数の可用性を指します。
JavaScriptでは、変数には2つのタイプのスコープがあります。
- グローバルスコープ
- ローカルスコープ
グローバルスコープ
プログラムの先頭または関数の外で宣言された変数は、グローバルスコープ変数とみなされます。
グローバルスコープ変数の例を見てみましょう。上記のプログラムでは、変数aはプログラムの先頭で宣言され、グローバル変数です。 これは、変数a
がプログラム内のどこでも使用できることを意味します。グローバル変数の値は関数内で変更することができます。
グローバル変数の値は、関数内で変更することができます。 たとえば、
// program to show the change in global variablelet a = "hello";function greet() { a = 3;}// before the function callconsole.log(a);//after the function callgreet();console.log(a); // 3
上記のプログラムでは、変数aはグローバル変数です。 の値はこんにちは. 次に、変数aが関数内でアクセスされ、値が3に変更されます。したがって、aの値は、関数内で変更した後に変更されます。ノート
: グローバル変数の値はプログラム内のさまざまな領域で変更される可能性があるため、グローバル変数の使用を避けることをお勧めします。 これは、プログラム内の未知の結果を導入することができます。JavaScriptでは、変数を宣言せずに使用することもできます。 変数を宣言せずに使用すると、その変数は自動的にグローバル変数になります。たとえば、
function greet() { a = "hello"}greet();console.log(a); // hello
上記のプログラムでは、変数aはグローバル変数です。変数がlet a = "hello"
を使用して宣言された場合、プログラムはエラーをスローします。ノート
: JavaScriptには、変数を宣言せずに使用できない"strict mode";
があります。 Strictの詳細については、JavaScript Strictを参照してください。P>
ローカルスコープ
変数はローカルスコープを持つこともできます。
例1:ローカルスコープ変数
// program showing local scope of a variablelet a = "hello";function greet() { let b = "World" console.log(a + b);}greet();console.log(a + b); // error
出力
helloWorldUncaught ReferenceError: b is not defined
上記のプログラムでは、変数aはグローバル変数であり、変数bはローカル変数です。 変数bは関数greet内でのみアクセスできます。 したがって、関数の外部で変数bにアクセスしようとすると、エラーが発生します。
let is Block Scoped
let
キーワードはブロックスコープです(変数は即時ブロック内でのみアクセスできます)。
例2:ブロックスコープ変数
// program showing block-scoped concept// global variablelet a = 'Hello';function greet() { // local variable let b = 'World'; console.log(a + ' ' + b); if (b == 'World') { // block-scoped variable let c = 'hello'; console.log(a + ' ' + b + ' ' + c); } // variable x cannot be accessed here console.log(a + ' ' + b + ' ' + c);}greet();
出力
Hello WorldHello World helloUncaught ReferenceError: x is not defined
上記のプログラムでは、変数
- aはグローバル変数です。 これは、プログラム内の任意の場所にアクセスすることができます。
- bはローカル変数です。 これは、関数
greet
内でのみアクセスできます。 - cはブロックスコープの変数です。 これは、
if
console.log()
console.log()
のブロックの外側にあるブロックスコープの変数cにアクセスしようとしています。 これはエラーをスローします。注意:JavaScriptでは、var
let
if
var c = 'hello';
を使用しようとすると、cがローカル変数として扱われるため、プログラム全体が機能しp>let
var
の詳細については、JavaScript let vs varをご覧ください。div