January 2017
Intermediate to advanced
452 pages
5h 53m
Japanese
「スコープ」は変数、定数および引数が有効な範囲(いつ、どこで定義されていると見なされるか、どこで値を参照したり変えたりできるのか)を決めるものです。既にスコープに関して何度か触れましたが、この章で詳しく説明します。
まず次の例を見てください。
example/ch07/ex07-00-1/main.js
function f(x) {
return x + 3;
}
console.log(f(5)); // 8
console.log(x); // エラー ReferenceError: x is not defined(xは定義されていない)
上の例を実行するとf(5)から返される8は表示されますが、関数の外でxの値を見ようとすると、xが定義されていないというエラーになってしまいます。xは関数fの中でしか参照することができません。このとき、「xのスコープは関数fである」と言います。
関数の引数は関数の本体でしか有効ではありません。関数の仮引数は関数が呼び出されるまでは存在していないのです。
関数は2回以上呼ばれる場合があります。関数は呼ばれるたびにその引数の実体が生成され、呼び出された関数から制御が戻るときにスコープから消えます。
また、変数と定数は生成されるまで存在していません。つまりletあるいはconstで宣言されるまでは、スコープにはありません(varは特別です。「 7.8 関数のスコープと巻き上げ」で説明します)。
![]() |
|
プログラミング言語によっては、「宣言(declaration)」と「定義(definition)」の間に明確な区別がなされている場合があります。典型的には、変数の「宣言」は識別子(名前)を付与することでその存在を公表することになります。一方、「定義」は、多くの場合それを宣言し、かつ、それに値を与えることを意味します。 ... |
Read now
Unlock full access