スコープ(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となる
|