🙃

[JavaScript]ローカル変数とグローバル変数について(備忘録)

2024/11/09に公開

1.はじめに

JavaScriptの変数には、スコープ(有効範囲)に基づいてローカル変数グローバル変数があります。

2.ローカル変数について

関数内で定義される変数です。
変数定義された関数内のみで有効であり、外部からアクセスできません。

3.グローバル変数について

関数外で宣言される変数で、プログラム全体で有効です。
ソースコードの可読性・保守性の維持と変数の上書き防止等の理由により、グローバル変数の使用は推奨されません。

4.サンプルプログラム

〇例1:ローカル変数のみを使用

Sample_1.js
function test() {
    let name = '鈴木';
    console.log(name);
}

test();

console.log(name);
実行結果
鈴木
/tmp/Sample_1.js:9
console.log(name);
            ^

ReferenceError: name is not defined

〇例2:letを使用せずローカル変数を宣言

Sample_2.js
function test() {
    name = '鈴木';
    console.log(name);
}

test();

console.log(name);
実行結果
鈴木
鈴木

重要:
関数内でletを使用せずにローカル変数を宣言すると、その変数はグローバル変数として扱われます。

〇例3:グローバル変数のみを使用

Sample_3.js
let name = '鈴木';

function test() {
    console.log(name);
}

test();
実行結果
鈴木

〇例4:グローバル変数とローカル変数を誤って併用

Sample_4.js
let name = '鈴木';

function test() {
    // letを使用せずローカル変数を宣言
    name = '大谷';
    console.log(name);
}

console.log(name);

test();

console.log(name);
実行結果
鈴木
大谷
大谷

重要:
関数内でletを使用せずにローカル変数を宣言しているので、その変数はグローバル変数として扱われます。
そのため、関数内で name = '大谷' と値が変更され、グローバル変数 name が変更されてしまいます。

〇例5:グローバル変数とローカル変数を正しく併用

Sample_5.js
let name = '鈴木';

function test() {
    // letを使用してローカル変数を宣言
    let name = '大谷';
    console.log(name);
}

console.log(name);

test();

console.log(name);
実行結果
鈴木
大谷
鈴木

5.参考

JavaScriptでグローバル変数を使わない方が良いみたい
ローカル変数
外部変数

6.その他

実行環境

Discussion