2021.11.09

スコープ(Javascript・PHP)

スクールで習わなかったスコープの概念…めっちゃ重要だった。

★★以前の記事は、スコープを考えてコードを書いていませんのでご注意ください。★★

まず、スコープとは「(定義した変数が)アクセスできる有効範囲」のこと。

【Javascript】【PHP】では2種類のスコープがあります。

①ローカルスコープ(関数スコープ)(ブロックスコープ) ②グローバルスコープ

①ローカルスコープ:アクセスできる範囲が指定した範囲のみ

※関数スコープとブロックスコープは指定した範囲の違い

★関数スコープの範囲は関数の中、

★ブロックスコープの範囲は{}で囲まれた中。

②グローバルスコープ:プログラムの中のどこからでもアクセス可能。

※グローバルスコープの領域で定義した変数をグローバル変数

※ローカルスコープの領域で定義した変数をローカル変数という。

※★PHP★にはスーパーグローバル変数という、あらかじめ定義されている変数がある。

ちなみにスーパーグローバル変数はどのスコープからも使用可能です。

この変数については、別の記事で紹介する予定です!

★ローカル、グローバルの違いはこちら↓★

・グローバル変数のみの場合

let petName = “komachi”; //グローバル変数が有効

function sayName() {
  let name = “僕のペットの名前は” + petName + “です。”;
  console.log(name); //結果は「僕のペットの名前はkomachiです。」が表示される
}

sayName(); // 作った関数は呼び出さないと結果は返ってこない!

・グローバル変数 VS ローカル変数両方がある場合

let anotherPetName = “komachi”; //グローバル変数

function getName() {
  let anotherPetName = “pochi”; //ローカル変数が優先される
  let intoroName = “私のペットの名前は” + anotherPetName + “です。”;
  console.log(intoroName);
//結果は「私のペットの名前はpochiです。」が表示される
}

getName();
console.log(intoroName);
//関数の外で表示しようとすると…
//「intoroNameは定義されていないよ」のReferenceError(参照エラー)となる
③定義する順番が大事だよ
let otherPetName = “komachi”; 

function tellName() {
  console.log(name); //変数定義前に出力しようとすると…
  let otherPetName = “tama”;
  let name = “私のペットの名前は” + otherPetName + “です。”;
}

tellName();
//変数を定義する前に出力すると、「nameにアクセスできませんよ」の
//ReferenceErrorとなる
※スコープを意識して、可読性、保守性の高いコードが書けることを目標に頑張ります。

\SHARE/

カテゴリー:
タグ: